Сообщение Rebus не может быть отправлено никаким обработчикам (Rebus 5 / Rebus.RabbitMQ 4.4.2) - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь настроить сценарии с одним издателем и несколькими подписчиками, используя RabbitMQ в качестве транспорта с использованием Rebus 5. RabbitMQ - 3.7.9.

Хотя пример отлично работал с использованием MSMQ, для RabbitMQ я получаю предупреждениепоскольку сообщение не может быть отправлено каким-либо обработчикам для первого подписчика (после того, как первое сообщение было использовано).

Последовательность следующая.

  1. Subscriber1 вызывается.
  2. Subscriber2 вызывается.
  3. Издатель вызывается.(Вызов издателя до или после подписки не влияет на поведение).
  4. Сообщение 1 опубликовано и используется Подписчиком 1 без каких-либо ошибок или предупреждений.
  5. Сообщение 2 опубликовано и используется Подписчиком 2 без каких-либо ошибок или предупреждений.
  6. Сообщение 3и далее для любых сообщений, потребляемых подписчиком 1, выдается предупреждение для обработчика, но подписчик 1 действительно получает сообщение.Он не помещается в очередь ошибок RabbitMQ.(Если шаги вызова обращены в обратном порядке - т.е. Sub2 вызывается до Sub1 - при получении сообщения из сообщения 3 и далее будет получено предупреждение для Sub2).
  7. Для всех сообщений из message4 и далее, которые используются Subscriber2, нетвыдается сообщение об ошибке или предупреждение.

Издатель и подписчики являются копией кода из Pub / Subsamples.Насколько я мог понять, это как-то связано с использованием RabbitMQ в качестве транспорта, и, возможно, некоторые настройки не выполняются.

==== Обновление =====

Я нашелчто я подписывался на Единую Очередь (для обоих Подписчиков), и это было причиной сообщений, проходящих поочередно между двумя подписчиками.Обратитесь к объяснению, дайте в этом вопросе Ребус: 2 обработчика в 2 процессах.Ударьте непоследовательно и поочередно .

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


Решено

Все улучшилось, и теперь я также убрал предупреждение.Я должен был определить класс сообщения специально - изначально я использовал строковое сообщение и предоставил его обработчику и для публикации и подписки.

Теперь у меня одинаковое сообщение, которое получают оба подписчика !!

...