2013-05-16 127 views
0

要求:一個activemq隊列應該在一臺機器(比如machine1)中運行。應該從machine1和另一臺機器(比如machine2)訪問該隊列。並且偵聽器只能運行在因此,我發送給機器1和機器2的所有消息都應該進入機器1中的可用隊列中,並且應該由同一臺機器(機器1)中可用的聽衆接收。主動MQ消費者只接收替代消息

問題:我發送給machine1和machine2的所有消息都進入隊列,但偵聽器只接收替代消息。如果1,3,5並且它無法接收消息2, 4 .....

觀察:假設在machine1和machine2中有監聽器,它正在正確接收,即: machine1中的listenr收到1,3,5 ......並且machine2中的收聽者收到2,4,6 ...........

回答

2

ActiveMQ默認使用RoundRobin分發。所以如果按照你的解釋,你的隊列中有兩個消費者(machine1和machine2),machine1將只接收一半的消息。 即使您在machine2上沒有進程處理消息,該主機上的ActiveMQ客戶端也可能正在使用它們。 如果您希望2個客戶端可以使用消息,則必須使用主題而不是隊列。

+0

我們需要堅持數據並處理任何服務器問題。如果我們使用這個話題,如何堅持數據?我們也必須按順序閱讀味精。所以只有一個消費者(reciver)必須運行。 –

+0

@SelvamR如果您想要保留並保存訂閱者脫機主題的消息,請使用持久訂閱者:http://activemq.apache.org/manage-durable-subscribers.html – raffian

0

我有一個類似的要求,在我有多個生產者,但只有一個消費者。使用隊列似乎不符合要求,因爲它似乎以循環方式處理,雖然我已經註釋掉了所有的消息監聽器服務器除了一個應該做所有的處理。專題解決了這個問題,但不幸的是,似乎沒有辦法讓服務器重啓主題的數據持久化。任何幫助將不勝感激

相關問題