簡體   English   中英

jms隊列與內存中的Java隊列

[英]jms Queue vs in memory java Queue

我有一種情況,我需要閱讀一個主題的(正在運行的)消息,並將其放在另一個Queue上。 我懷疑我是否需要jms Queue還是對內存中的Java Queue感到滿意。 我將通過同一jvm中的其​​他線程從隊列中進行讀取,並在從(內存中)隊列中讀取消息並進行必要的處理(將其發送到遠程IBM之后),將客戶端對該消息的消息確認為主題MQ)。因此,如果我的客戶端崩潰,則內存隊列中存在的消息將丟失,但仍然存在於主題中,並將重新傳遞給我。 我對嗎 ?

其中一些取決於您如何設置隊列/主題以及用於從IBM MQ讀取的連接字符串,但是如果使用缺省值,則如果將其讀取到內存隊列中,則會丟失消息。

我會在與庫相同的JVM中使用ActiveMQ,因此您需要照顧到接收,交付和持久性。

另外,如果您正在聽某個主題,即使崩潰后您重新連接,除非崩潰,否則崩潰后也不會收到錯過的消息。

  1. 將您的客戶端配置為持久訂閱者
  2. 在該時間內重新連接(在達到expireMessagesPeriod之前)

如果確保每條消息的傳遞很重要,則ActiveMQ庫並不大,值得使用,尤其是在異步環境中。

主要區別在於,當應用程序關閉時,內存中的數據將丟失。 如果主題/隊列不是持久性的,則當服務器關閉時,JMS隊列將丟失數據。 前者比后者的可能性要大得多,因此我也要說一下JMS。

暫無
暫無

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

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