Можете ли вы опубликовать сообщение при обработке очереди в RabbitMQ .Net Client? - PullRequest
0 голосов
/ 20 октября 2010

У меня есть пара сценариев обмена сообщениями, мне нужна помощь с использованием RabbitMQ 2.1.0 в c # ... 1) Я бы хотел, чтобы подписчик слушал «сырую» очередь;затем выполните некоторую предварительную обработку и опубликуйте новое сообщение, например, «предварительно обработанное», для того же обмена.2) аналогично 1, но публикация в другом обмене

В Руководстве пользователя .Net Client я заметил, что в нем говорится, что не вызывайте .basicPublish во время обратного вызова, поскольку он блокирует потоки.* Я хотел бы успешно обработать и опубликовать новое сообщение, прежде чем отправить ack () на исходное сообщение;просто я уверен, что каждое сообщение обрабатывается.

Это правильный способ обработки или это вызовет проблемы с многопоточностью?

Спасибо за помощь!

1 Ответ

1 голос
/ 20 октября 2010

То, что вы говорите о обратных вызовах, верно, но оно применимо только в том случае, если вы создаете подкласс DefaultBasicConsumer (или пишете свой собственный потребитель с нуля).

В вашем случае подписка является потребителем, и она не должна вызывать никаких блокировок сама по себе. Код у вас в порядке, так как он использует только подписчик. На этом этапе BasicPublish должен быть безопасен.

Ваш код также (более или менее) наш подписчик пример.

Также, извините, что не отвечаю на rabbitmq-обсудить.

...