Издатель не может опубликовать сообщение в брокере RabbitMq, пока слушатель подключен к очереди. - PullRequest
2 голосов
/ 25 апреля 2019

У меня есть два приложения .net, соединяющихся друг с другом через две очереди RabbitMq. Это работает так:

Приложение 1 публикует сообщение в очереди, которое я назову «QueueHot», и определяет, что в этой самой очереди, которую он только что опубликовал, нет прослушивателя, затем оно инициализирует другое приложение .net (Приложение 2), передавая «QueueHot» в качестве параметра. Затем приложение2 запускается и начинает прослушивать QueueHot, затем ему удается получить сообщение из этой очереди. После того, как приложение2 обрабатывает сообщение, оно пытается опубликовать результат обработки в другой очереди («QueueCold»), которую прослушивает приложение Application1. Но проблема в том, что Application2 не может опубликовать сообщение, но если я убью процесс Application1, Application2 затем сможет опубликовать, но вот интересная вещь: сообщение, которое Application2 только что опубликовал, остается как Unacked, хотя я только что убил Application1, который, теоретически, был единственным слушателем. Поэтому, если я снова запускаю Приложение1, он не сможет перехватить сообщение, поскольку оно не распаковано, но если я убью Приложение2, сообщение будет освобождено, и Приложение1 наконец сможет получить сообщение.

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

Я использовал одного и того же пользователя в обоих приложениях, и даже после смены пользователя одного из приложений проблема все еще сохраняется.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...