簡體   English   中英

Java中的多線程持久隊列

[英]multi threaded persistent queue in java

架構模塊所需的建議

我有一個偵聽PORT的PORT Listener。 所有收到的請求都需要排隊。 我有5個線程來處理隊列。 同時,所有傳入的請求都必須保留,處理相同的響應也必須保留。

最好的實現方法是什么?

由於某些情況下我不得不暫時停止處理幾個小時,因此請求和響應無法持久保存。 另一種情況可能是此應用程序失敗。 我們應該能夠從持久性存儲中恢復隊列。

另一個問題是我們不能保證隊列的大小。 因此,從db連續獲取項目所需的時間應該更少。 有時數據庫中可能沒有請求。 我應該去NOSQL嗎?

基本概念是使用持久隊列。

您的請求處理程序(例如Servlet)應將請求轉換為JMS消息並通過JMS隊列發送。 您可以使用ActiveMQHornetQ或其他。 接下來,創建一個使用該隊列中消息的消息驅動Bean。

JMS隊列是持久性的,因此,如果服務器發生故障,您將不會丟失任務。 可以控制MDB(例如使用JMX或系統屬性),因此您可以隨時停止處理,並且任務將存儲在隊列中,直到再次啟用MDB。

這是Oracle的完整JMS演練 ,將逐步向您展示如何做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM