У меня есть установка Spring JMS, ActiveMQ, где я использую SimpleMessageListenerContainer, который я связал с прослушивателем сообщений POJO. Я определил RedeliveryPolicy, где, если в прослушивателе сообщений POJO есть исключения, сообщение отправляется в DLQ после 4 попыток. Я хотел бы получить доступ к сообщению после исчерпания повторных попыток, возможно ли это с помощью SMLC? Как насчет DefaultMessageListenerContainer?
Как получить сообщение после последней попытки в настройке JMS, ActiveMQ и SimpleMessageListenerContainer?
Ответы (1)
Вам нужен другой контейнер, прослушивающий DLQ.
Или вы можете использовать JmsTemplate.receive()
в DLQ, чтобы получать их по запросу.
person
Gary Russell
schedule
10.02.2016
Нет ли способа получить ссылку на сообщение (возможно, непосредственно перед его отправкой в DLQ) без прослушивания DLQ? Требование - не трогать DLQ.
- person user3163473; 10.02.2016
К вашему сведению, идея такова: попытаться отправить сообщение 4 раза, если это не удается, возьмите сообщение после последней попытки и пометьте его как ошибку в базе данных. Оставьте DLQ для наблюдения в исключительных случаях.
- person user3163473; 10.02.2016
JMS 2.0 сделал
JMSXDeliveryCount
обязательным. Некоторые брокеры 1.1 поддерживают его. Таким образом, вы можете использовать счетчик, чтобы определить, сколько попыток было сделано. "JMSXDeliveryCount is not a new property; it was defined in JMS 1.1. However, in JMS 1.1, it was optional for a JMS provider to actually set it, which meant application code that used it was not portable. In JMS 2.0, it becomes mandatory for JMS providers to set this property, allowing portable applications to make use of it."
- person Gary Russell; 10.02.2016
JMSXDeliveryCount помог создать решение без прослушивания DLQ.
- person user3163473; 15.02.2016