Различия между BasicAck и BasicReject


#1

В чем различия между этими двумя методами? Гонял на тестовом стенде, оба этих метода удаляют сообщение из очереди, в чем тогда смысл метода BasicReject?


#2

тут есть особенность

ACK - подтверждают сообщения
Reject - отказывается

Вот с последним очень важный момент https://www.rabbitmq.com/dlx.html

Создавая очереди на стороне RMQ можно (и чаще нужно) указывать для каждой очереди так называемую точку обмен для “мертвых писем”. Поведение такое

  • создается точка обмена “some.exchange”
  • создается точка обмена “some.dead”
  • создается очередь “some.messages” c параметром dtx “some.dead”
  • создается очередь “some.deadletter”
  • точка обмена “some.exchange” подключается к “some.messages”
  • точка обмена “some.dead” подключается к “some.deadletter”

Теперь получатель “some.messages” может сказать Reject() и тогда сообщение удалится из “some.messages” и ляжет в “some.deadletter”

Обычно подписчиком на “some.deadletter” идет средство мониторинга или администрирования для разбора недоставленных сообщений


#3

Спасибо за объяснение, может этот пример в документацию? а то там немного скупое описание