我试图了解多播在 MSMQ 中的工作原理,但我根本无法接收消息,即使来自同一台机器也是如此。我显然做错了什么,但看不到什么。
这是我所在的位置:
我手动创建了一个名为的非事务性私有队列MulticastTest
,然后将多播地址设置为234.1.1.1:8001
. 然后我的测试发送应用程序会这样做:
MessageQueue queue = new MessageQueue("FormatName:MULTICAST=234.1.1.1:8001");
queue.Send("Hello World");
这行得通,它至少似乎发送了我在同一台机器上的传出队列中看到的消息。至少我认为这是正确的,如果不是,请告诉我。
所以现在我尝试运行我的接收应用程序(在同一台机器上或配置为相同多播地址的不同机器上),但我无法让它工作。如果我试试这个:
MessageQueue queue = new MessageQueue("FormatName:MULTICAST=234.1.1.1:8001");
var message = queue.Receive();
它根本行不通,该Receive()
方法抛出一个异常说:
指定的格式名称不支持请求的操作。例如,不能删除直接队列格式名称
如果我尝试将接收队列设置为.\private$\MulticastTest
至少等待消息但没有任何反应,则所有消息仍保留在传出队列中。
那么我做错了什么?MSMQ 是否需要运行某种服务才能从传出队列发送消息?
我还尝试根据此问题向匿名用户授予完全权限,但这没有影响。