gpt4 book ai didi

c# - 如何使用 MSMQ 发送/接收多播消息?

转载 作者:行者123 更新时间:2023-11-30 22:00:09 24 4
gpt4 key购买 nike

有人可以帮我找到一些示例代码,以使用您选择的任何 .NET 语言使用 MSMQ 发送和接收 Multicast 消息。我四处搜索了一下,看到发送的是:

MessaegQueue topic = new MessageQueue("formatname:multicast=234.1.1.1:8081")
topic.Send("Hello out there")

我试着用 Receive 做同样的事情:

MessageQueue topic = new MessageQueue("formatname:multicast=234.1.1.1:8081")
topic.Receive();

但我一无所获。谁能展示一些关于如何接收多播消息的示例代码?还是我发错了?

最佳答案

所以我想通了。

发送多播消息:

MessageQueue topic = new MessageQueue("formatname:multicast=234.1.1.1:8081")
topic.Send("Hello out there")

接收多播消息:

这有点棘手,因为您无法订阅多播地址。您需要做的是创建一个队列,最好是创建一个私有(private)队列,该队列将附加到您要监视的多播地址,然后监听您创建的私有(private)队列而不是多播地址。像这样:

  Dim privMulticastQueue As String = GetPrivateQueueForMulticastAddress("formatname:multicast=234.1.1.1:8081")
Dim msgq as MessageQueue = GetMessageQueue(privMulticastQueue)
msgq.MulticastAddress = GetMulticastAddress(destination)
msgq.Label = "Private Queue for receiving messages from: " & destination
msgq.Receive()

还有一些支持方法(可能有更好的写法,欢迎指正,但这是我的第一次尝试):

 Private Function GetPrivateQueueForMulticastAddress(ByVal dest As String) As String
Dim privateQ As String = GetMulticastAddress(dest).Replace(".", "_").Replace(":", "_")
Return ".\Private$\" & privateQ
End Function

Private Function GetMulticastAddress(ByVal dest As String) As String
Return dest.Split("=")(1)
End Function

Private Function GetMessageQueue(ByVal dest As String) As MessageQueue
Try
If Not MessageQueue.Exists(dest) Then
MessageQueue.Create(dest)
End If

Dim msgq As MessageQueue = New MessageQueue(dest)
Return msgq
Catch ex As Exception
Throw New EMGException("Failed while trying to use destination: " & dest, ex)
End Try

End Function

关于c# - 如何使用 MSMQ 发送/接收多播消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com