Как указать дополнительную информацию о сообщении кролика, когда он мертв
У меня есть очередь кроликов с сообщениями для потребления. У меня также есть слушатель, который может потерпеть неудачу. Очередь настроена с обменом мертвой буквой (вместе с очереди с мертвой буквой). Я хочу видеть информацию об исключениях в сообщениях, находящихся в очереди мертвых букв.
Вот как это работает в настоящее время:
- Я отправляю поврежденное сообщение в свою обычную очередь.
Мой слушатель (я использую Java org.springframework.amqp.core.MessageListener) терпит неудачу с чем-то вроде: "java.lang.RuntimeException: поврежденное сообщение"
Сообщение отклоняется и переходит в очередь мертвой буквы через обмен мертвой буквой.
Когда я смотрю сообщение с мертвой буквой в пользовательском интерфейсе Rabbit Admin, я вижу:
заголовки:
х-смерть:
причина: отклонено
Но я хочу увидеть "java.lang.RuntimeException: поврежденное сообщение" где-то в пользовательском интерфейсе. Я предполагаю, что это должен быть пользовательский заголовок?
Можно ли, например, поставить общий try-catch моему слушателю и улучшить заголовки с информацией об исключении?
Нет; RabbitMQ (на самом деле спецификация AMQP) не предоставляет механизму для улучшения качества отклоненных сообщений с дополнительной информацией. Протокол поддерживает только подтверждение или отклонение сообщений.
Spring AMQP вместе с повторным перехватчиком предоставляет механизм для повторной публикации сообщения в другую очередь (которая может быть такой же, как DLQ), с дополнительной информацией в заголовках (след стека стека и т.д.).
См. RepublishMessageRecoverer
в разделе об обработке ошибок с асинхронными потребителями.
- Вопросы
- Rabbitmq-exchange
- Как указать дополнительную информацию о сообщении кролика, когда он мертв