Сообщение теряется после истечения времени ожидания в 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 позволяет сообщениям быть подтвержденными до их использования. Мне кажется, лучший вариант - использовать транзакции