Сообщение теряется после истечения времени ожидания в OpenMQ

У меня есть система, где мы используем OpenMQ. Я замечаю, что иногда мы получаем эту ошибку от потребителя:

WARN  org.springframework.jms.listener.DefaultMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'Sun Java System MQ Destination
getName():      xxMessageNamexx
Class:          com.sun.messaging.Queue
getVERSION():       3.0
isReadonly():       false
getProperties():    {imqDestinationName=xxDestinationNamexx, imqDestinationDescription=A Description for the Destination Object}' - trying to recover. Cause: [C4000]: Packet acknowledge failed. user=guest, broker=xxx:5555(55385)
com.sun.messaging.jms.JMSException: [C4000]: Packet acknowledge failed. user=guest, broker=xxx:5555(55385)

Кроме того, это сообщение потеряно и больше не находится в очереди.

Я знаю, что могу это исправить, увеличив imqAckTimeout, но мне интересно, если у нас есть проблема с тайм-аутом, почему сообщение удаляется из очереди?

Я новичок в очереди сообщений, поэтому, пожалуйста, дайте мне знать, какую информацию я могу предоставить, которая может помочь решить проблему?

1 ответ

Решение

Ну, этот ответ мне все объясняет сейчас /questions/31178667/kak-smodelirovat-povtornuyu-dostavku-soobscheniya-v-stsenarii-seansa-jms-autoacknowledge/31178688#31178688.

Кажется, что использование режима AUTO_ACKNOWLEDGE в AbstractMessageListenerContainer позволяет сообщениям быть подтвержденными до их использования. Мне кажется, лучший вариант - использовать транзакции

Другие вопросы по тегам