2017-08-16 83 views
0

我學習JMS,我知道有2種類型的通信:
1.隊列
2主題是否有可能由JMS中的同一隊列中的多個消費者使用?

我瞭解的話題,但我不明白的是它可以從同一個隊列由兩個不同的消費者閱讀。

我問起它,因爲我知道它可能在amqp。

讓我們排隊這樣

tail -> |5|4|3|2|1|-> head 

和下面的操作順序:

  1. consumer_1閱讀並得到了1
  2. consumer_2閱讀並得到了2
  3. consumer_1閱讀並得到了3
  4. consumer_2閱讀並獲得4
  5. consumer_2讀取並獲得5

是否可能或它與點對點方法相矛盾?

+0

首先它取決於實現,所以請仔細閱讀文檔,您正在使用的實現?,好吧,應該可以用這種方式進行配置。 – Raghuveer

+0

@Raghuveer我只是試圖學習。目前我正在閱讀理論 – gstackoverflow

+2

是的,它是可能的(並且經常使用,例如簡單地在多線程中使用消息) –

回答

1

這取決於你要適用於你的Q上的語義:嚴格FIFO或並行處理..

語義(Q +消費者+並行結構等)的實施是產品/架構依賴(即集羣或不,多線程等)。

包含用於更新庫存的消息的Q的語義可能是FIFO並且必須嚴格按照順序處理,具有發送給客戶的郵件消息的隊列可能是並行的並且可以以任何順序處理,併發消費者

+0

添加到此JMS還允許混合使用並行處理嚴格的秩序。使用JMSXGroupID和JMSXGroupSeq屬性,生產者可以確保消息的一組/一批將由同一個消費者(線程/進程/節點)處理。 –

相關問題