Я пытаюсь настроить сценарии с одним издателем и несколькими подписчиками, используя RabbitMQ в качестве транспорта с использованием Rebus 5. RabbitMQ - 3.7.9.
Хотя пример отлично работал с использованием MSMQ, для RabbitMQ я получаю предупреждениепоскольку сообщение не может быть отправлено каким-либо обработчикам для первого подписчика (после того, как первое сообщение было использовано).
Последовательность следующая.
- Subscriber1 вызывается.
- Subscriber2 вызывается.
- Издатель вызывается.(Вызов издателя до или после подписки не влияет на поведение).
- Сообщение 1 опубликовано и используется Подписчиком 1 без каких-либо ошибок или предупреждений.
- Сообщение 2 опубликовано и используется Подписчиком 2 без каких-либо ошибок или предупреждений.
- Сообщение 3и далее для любых сообщений, потребляемых подписчиком 1, выдается предупреждение для обработчика, но подписчик 1 действительно получает сообщение.Он не помещается в очередь ошибок RabbitMQ.(Если шаги вызова обращены в обратном порядке - т.е. Sub2 вызывается до Sub1 - при получении сообщения из сообщения 3 и далее будет получено предупреждение для Sub2).
- Для всех сообщений из message4 и далее, которые используются Subscriber2, нетвыдается сообщение об ошибке или предупреждение.
Издатель и подписчики являются копией кода из Pub / Subsamples.Насколько я мог понять, это как-то связано с использованием RabbitMQ в качестве транспорта, и, возможно, некоторые настройки не выполняются.
==== Обновление =====
Я нашелчто я подписывался на Единую Очередь (для обоих Подписчиков), и это было причиной сообщений, проходящих поочередно между двумя подписчиками.Обратитесь к объяснению, дайте в этом вопросе Ребус: 2 обработчика в 2 процессах.Ударьте непоследовательно и поочередно .
Итак, теперь у меня есть очередь для каждого подписчика, и я получаю одно и то же сообщение для обоих подписчиков, НО на каждом издателе все еще выдается предупреждение.
Решено
Все улучшилось, и теперь я также убрал предупреждение.Я должен был определить класс сообщения специально - изначально я использовал строковое сообщение и предоставил его обработчику и для публикации и подписки.
Теперь у меня одинаковое сообщение, которое получают оба подписчика !!