我有一個接收來自隊列消息的客戶端。我目前有一個執行onMessage()
的MessageListener
。我可以直接向隊列發送消息請求嗎?
一旦收到消息,它將被進一步處理,然後保存到onMessage()
方法的數據庫中;客戶然後確認收到的消息。
只要數據庫啓動就沒有問題。但是,如果數據庫關閉,客戶端將不會確認。
爲了迎合這一點,我希望客戶端按計劃的時間間隔向隊列發送預定的請求,以發送任何未確認的消息。
事實上,我這樣做的唯一方法是重新啓動客戶端,這不是理想的。有沒有辦法觸發隊列重新發送未確認的消息而不重新啓動?
我有onMessage()
:
//code to connect to queue
try {
if (DB is available){
//process message
//save required details to DB
msg.acknowledge();
}
else{
//schedule to request same message later from queue
}
} catch (Exception e) {}
如果數據庫關閉,爲什麼不等到啓動前再嘗試繼續。這樣就沒有必要重播消息 – 2012-01-08 11:05:36
你的意思是阻止直到數據庫啓動?我不確定這是否可以......除非我誤解你的評論。 – gkinu 2012-01-08 14:23:02
如果你阻塞,直到數據庫啓動會發生什麼?該線程是否有更重要的事情要做? ;)如果是這樣,我會在另一個線程,會話或連接中運行更重要的事情。 – 2012-01-08 14:25:46