В чем различия между этими двумя методами? Гонял на тестовом стенде, оба этих метода удаляют сообщение из очереди, в чем тогда смысл метода BasicReject?
Различия между BasicAck и BasicReject
тут есть особенность
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” идет средство мониторинга или администрирования для разбора недоставленных сообщений
Спасибо за объяснение, может этот пример в документацию? а то там немного скупое описание