【发布时间】:2012-05-13 05:21:48
【问题描述】:
我试图弄清楚多播在 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 是否需要运行某种服务才能从传出队列发送消息?
我还尝试按照this question 向匿名用户授予完全权限,但这没有任何影响。
【问题讨论】: