RMQ Failure
Зачем
Реализация паттернов обработки сбоев для обеспечения атрибута качества ИС Отказоустойчивость Fault tolerance:
- Basic.Reject with reueue = true - отклоненение сообщения и возврат в начало очереди
- минусы: лишняя нагрузка на внешний сервис, т.к. сообщения без задержки будут возвращаться в очередь. Решение: Basic.Reject with reueue = false + DLX.
- Basic.Reject with reueue = false - отклоненение сообщения и возврат в DLX, затем в DLQ->как DLX используется Exchange для сервиса (consumer)
- Очередь повторных попыток Dead Letter eXchange с временной задержкой на повторную отправку сообщения
- обычно у сервиса (consumer) нет БД (stateless)
- такой же вариант от ДомКлик DLX->DLQ->как DLX используется Exchange для сервиса (consumer)
- Алгоритм обработки “битого” сообщения Poison Message
- Очередь повторных попыток Dead Letter eXchange с временной задержкой на повторную отправку сообщения
- Basic.Nack
- реализует то же самое поведение что и метод отклика Basic.Reject, но при этом он добавляет несколько отсутствующих аргументов к множественному поведению Basic.Ack.
- Выступая в качестве частного дополнения RabbitMQ для протокола AMQP, Basic.Nack не гарантирует его присутствия в прочих брокерах AMQP, таких как QPID или ActiveMQ.
Patterns
Dead Letter eXchange (DLX)
- x-mesage-ttl — превышение времени жизни;
- x-max-length — превышение длины очереди;
- reject with reueue = false — явный реджект сообщений со стороны консьюмера.