2009-09-08 4 views
5

Возможно ли, чтобы несколько пользователей прослушивали один экземпляр MSMQ и использовали интерфейс «Селективный потребитель», чтобы каждый из них имел дело с отдельным подмножеством сообщений? Я не могу заставить этот сценарий работать правильно, используя pub/sub - один потребитель в очереди работает нормально, но при использовании> 1 потребителя (несколько экземпляров одного и того же исполняемого файла) нигде не появляется сообщений. Насколько я понимаю, это не относится к «конкурирующим потребителям», поскольку только один потребитель обрабатывает одно сообщение.Несколько потребителей для одной очереди в MassTransit

Любая помощь или указатели оцениваются.

ответ

2

Если вы используете MassTransit для отправки сообщений из очереди MSMQ, рекомендуется, чтобы очередь была локальной в поле.

Если у вас есть несколько процессов, которые читаются из одной очереди для распространения нагрузки на сообщения, вы можете использовать выборочный прием, чтобы использовать только сообщения в каждом экземпляре, которые имеют отношение к этому процессу.

Например, если у вас есть несколько экземпляров приложения, отправляющего сообщения службе, и эта служба отвечает коррелированным сообщением, вы можете подписаться на коррелированное сообщение по идентификатору, и будут отправлены только те подписанные сообщения. Сообщения, которые не выбраны, остаются в очереди до тех пор, пока не будут обработаны ни одним из интересующих процессов.

Из-за этого шаблона настоятельно рекомендуется установить истечение срока действия сообщения, поэтому игнорируемые ответы не засоряют очередь со временем.

Этот сценарий довольно распространен при тиражировании шаблона запроса/ответа посредством обмена сообщениями.