Как указать дополнительную информацию о сообщении кролика, когда он мертв

84
12

У меня есть очередь кроликов с сообщениями для потребления. У меня также есть слушатель, который может потерпеть неудачу. Очередь настроена с обменом мертвой буквой (вместе с очереди с мертвой буквой). Я хочу видеть информацию об исключениях в сообщениях, находящихся в очереди мертвых букв.


Вот как это работает в настоящее время:


    Я отправляю поврежденное сообщение в свою обычную очередь.
    Мой слушатель (я использую Java org.springframework.amqp.core.MessageListener) терпит неудачу с чем-то вроде: "java.lang.RuntimeException: поврежденное сообщение"
    Сообщение отклоняется и переходит в очередь мертвой буквы через обмен мертвой буквой.
    Когда я смотрю сообщение с мертвой буквой в пользовательском интерфейсе Rabbit Admin, я вижу:
    заголовки:

    х-смерть:

    причина: отклонено

Но я хочу увидеть "java.lang.RuntimeException: поврежденное сообщение" где-то в пользовательском интерфейсе. Я предполагаю, что это должен быть пользовательский заголовок?


Можно ли, например, поставить общий try-catch моему слушателю и улучшить заголовки с информацией об исключении?

спросил(а) 2015-11-19T20:24:00+03:00 5 лет назад
1
Решение
91

Нет; RabbitMQ (на самом деле спецификация AMQP) не предоставляет механизму для улучшения качества отклоненных сообщений с дополнительной информацией. Протокол поддерживает только подтверждение или отклонение сообщений.


Spring AMQP вместе с повторным перехватчиком предоставляет механизм для повторной публикации сообщения в другую очередь (которая может быть такой же, как DLQ), с дополнительной информацией в заголовках (след стека стека и т.д.).

См. RepublishMessageRecoverer в разделе об обработке ошибок с асинхронными потребителями.

ответил(а) 2015-11-19T20:52:00+03:00 5 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема