簡體   English   中英

在ActiveMQ中將持久訂閱者與虛擬主題一起使用,並且訂閱恢復策略會發揮任何作用嗎?

[英]Using durable subscribers with virtual topics in ActiveMQ and does Subscription Recovery Policy play any role?

我對如何正確使用ActiveMQ感到有些困惑。

我想做什么

我有一個系統A,它會產生有關虛擬主題的消息。 然后是系統B和C,它們都消費來自同一虛擬主題的消息。 系統B或C有可能脫機。 因此,當他們重新聯機時,我需要他們接收脫機期間產生的所有消息。

到目前為止我嘗試過的

我已經閱讀了有關持久訂閱者的信息( http://activemq.apache.org/how-do-durable-queues-and-topics-work.html虛擬主題/隊列和持久性 )。 這似乎符合我的問題描述,並且在執行了一些實現之后,一切似乎都按照我最初的期望工作了。

是什么造成混亂

然后,我了解了有關訂閱恢復策略( http://activemq.apache.org/subscription-recovery-policy.html )。 這是我應該配置的東西還是我完全誤解了? 例如,如果我要存儲指定數量的消息,是否應該配置FixedCountSubscriptionRecoveryPolicy還是應該研究某些pendingMessageLimitStrategy

第一個問題是,當虛擬主題的要點要發布到主題(例如VirtualTopic.FOO),然后在匹配的過濾器值(例如Consumer)上創建Queue使用者時,為什么要在虛擬主題的Topic部分上使用持久主題訂閱。 A.VirtualTopic.FOO)?

關於恢復策略,它們僅適用於與持久主題訂閱不同的主題訂閱。 對於普通的舊主題訂閱,發送到主題的消息僅在該訂閱連接后才保留在該代理的代理中,一旦刪除,該訂閱正在播放的所有消息就會被丟棄。 訂閱恢復策略的作用是創建各種可配置的緩存,以允許創建主題訂閱並重播發送到匹配主題的消息。 對於持久主題訂閱而言,這是不必要的,因為只要訂閱者脫機,發送給它訂閱的主題的消息就會存儲在代理消息存儲中。

僅在少數情況下,例如將發送到標記為非持久的主題的消息或首次訂閱時,恢復策略才能混合到持久的主題訂閱中,在這種情況下,某些過去的消息可以從內存中恢復並作為新的持久訂閱播放底漆,但這僅是耐用性方面的優點。

無論如何,最好使用虛擬主題以創建隊列使用者的方式使用虛擬主題,因為與持久主題訂閱相比,此機制具有許多優勢。 有關虛擬目標的ActiveMQ文檔對此進行了說明。

暫無
暫無

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

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