Получите сообщение от RabbitMQ без потребления - PullRequest
0 голосов
/ 25 февраля 2019

Я хотел бы получить копию сообщений, присутствующих в очереди Rabbitmq, не потребляя их.Является ли это возможным ?Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я хотел бы получить копию сообщений, присутствующих в очереди Rabbitmq, не потребляя их.Возможно ли это?

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


ПРИМЕЧАНИЕ: команда RabbitMQ контролирует rabbitmq-users список рассылки и только иногда отвечает на вопросы по StackOverflow.

0 голосов
/ 25 февраля 2019

может быть, вы можете зарегистрировать потребителя (как показано здесь в официальном документе) без предоставления брокеру подтверждения : no_ack=True

channel.basic_consume(callback, queue='hello', no_ack=True)

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

Может быть, этоне самый чистый способ сделать то, что вам нужно, но он работает, и он прост.

Другой (но похожий) подход, который вы можете использовать, основан на так называемом pull API (в противоположность push API , который вы используете при регистрации абонента );Я использовал этот подход в приложении .Net: вы можете найти документацию .Net здесь , и я думаю, что API-интерфейсы Python в этом тоже похожи.

Основная идея - получить сообщениебез подтверждения: channel.BasicGet(queueName, noAck)

Я надеюсь, что это поможет вам перейти к полному и надежному решению!

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