我想同時使用來自多個隊列的jms消息。所有的消息應該在長時間運行處理後進入數據庫,我無權丟失它們。jms在退出onMessage()後調用message.acknowledge()
問題:是否可以保存消息以供將來確認使用,並在另一個消息正在處理時調用oldMessage.acknowledge()
?
我的第一個猜測是,這是不可能的,因爲它深入jms處理單元,我必須在onMessage(...)
方法中處理消息和確認。
第二種猜測是同時拆分onMessage()並允許長時間運行處理許多消息。但這不是一個好的選擇,因爲我必須確保所有消息都來了訂購!
第二個問題:有沒有什麼方法可以確保併發處理時的傳入順序?
讓你有例如2個隊列,在第一個你得到的消息A和B,並在第二個你得到C和d?現在至少有兩個線程可以讀取它們。他們也在他們身上做了很多工作並將他們存儲在數據庫中,對吧?所以你想保持相同的順序,當他們插入數據庫? – Eugene
爲了使處理併發我的意思是使每個輸入隊列的併發處理像[這裏](http://stackoverflow.com/questions/3088814/how-can-i-handle-multiple-messages-concurrently-from-a- jms-topic-not-queue-wit),所以我認爲如果我有排隊的消息A和B,那麼我想確保他們來到訂購DB關於獨家消費者的訂單 –