Я пытаюсь понять, как работает многоадресная рассылка в 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 отправлял сообщения из исходящей очереди?
Я также пытался дать полные разрешения АНОНИМНОМУ ПОЛЬЗОВАТЕЛЮ согласно этому вопросу , но это не повлияло.