2011-11-21 108 views
2

我知道主題是將消息廣播給客戶端。但在ActiveMQ文檔中,它提到負載平衡:虛擬主題的ActiveMQ消息組

解釋消息組的另一種方式是它提供消費者間消息的粘性負載均衡;其中JMSXGroupID有點像HTTP會話ID或cookie值,而消息代理的行爲類似於HTTP負載均衡器。

這裏就是我不明白的地方。

是不是廣播?

我想要做的是如下: 如果生產者將消息發送給A組,不知何故經紀人控制流量,並且消息「物理」不應該去B組

它甚至有可能與虛擬話題?

回答

3

VirtualTopics爲每個主題訂閱者創建隊列並將消息複製到每個訂閱者,因此它將所有消息「廣播」給所有訂閱者。

ActiveMQ消息組爲您提供給定消息組的獨佔使用者線程(獨特的JMSXGroupID)。您無法控制哪個消費者選擇每個組,並且同一個消費者線程可以處理多個組。

據我所知,如果您將JMSXGroupID設置爲發送給VirtualTopic的消息,它將會到達每個訂戶的虛擬隊列中。但是,如果您有多個線程處理這些隊列(maxConcurrentConsumers> 1),那麼它們將針對每個消息組進行單線程處理等。

總的來說,如果您希望某些訂閱者只處理髮送給一個主題,然後使用message selectors來選擇這個子集。

+0

這就是我的想法和我的測試程序顯示。由於我是這個領域的新手,我很想知道這一點。 – exiter2000