Несколько потребителей для одной очереди в MassTransit

StackOverflow https://stackoverflow.com/questions/1394785

  •  21-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top