我想從Java中的MQ隊列中讀取消息,並且在處理異常時需要回滾時我有點困惑。MQ消息回滾
我有一個閱讀器類,在循環中運行並查找消息。當我初始化閱讀器時,它會創建一個連接和一個會話。然後,當要在循環中讀取消息時,它會創建一個MQQueue
和MQQueueReceiver
。這工作正常,我得到一個JMSMessage隊列,然後交給另一個線程工作。如果工作線程失敗,我想將該消息放回到隊列中(這樣它會被羣集中的其他節點重試)。
我的問題是,我該如何回滾?我注意到在MQQueueSession
類中有一個rollback()
方法。但我正在重複使用同一個會話來處理所有消息。我是否明白應該爲每條消息創建一個新的會話,而不是一遍又一遍地重複使用同一個消息?
這對我來說很直觀。
此外,會話使用connection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
創建。我是否應該使用另一個標誌,而不是CLIENT_ACKNOWLEDGE
?
完美。謝謝 – mprivat