2012-12-11 457 views
1

我有一個主題,有兩個訂戶。但是,其中一個用戶將部署在羣集中。那麼,實際上(我認爲?)羣集將被視爲多個訂閱者。 我需要確保只有一條消息被羣集使用。有消息隊列訂閱主題

我不知道這樣做的選項。 是否可以在羣集和主題之間插入隊列,然後讓羣集應用程序僅與插入的隊列一起工作?

如果這是可能的,一般來說,如何使隊列「訂閱」主題?

我聽到的另一個想法是在集羣中創建克隆訂戶,任何人都會在此之前聽到這個問題來解決這個問題嗎?

另一個想法是取消主題,只使用兩個隊列,這似乎是一個安全的解決方案?

使用WebSphere MQ

+0

當您說「其中一個訂戶將部署在集羣中」時,您是指應用服務器集羣還是WebSphere MQ集羣?因爲在一種情況下,您有多個實例競爭隊列中的消息,另一個隊列中有多個實例,並且每個實例都有自己的數據副本。答案差異很大,取決於您對「羣集」這個詞的用意。如果你的意思是一個應用服務器集羣,那麼Shashi的反應很好。 –

+0

好點T.Rob。 Thx – Shashi

+0

是的,我的意思是應用程序服務器集羣,thx – bmw0128

回答

1

您可以使用持久訂閱來實現此目的。

行政創建一個持久預訂並指定一個目標,基本上是一個隊列,它將接收在指定主題上發佈的發佈。您的羣集應用程序可以從該目標獲取消息。由於正在從隊列中接收發布,因此只有一個應用程序實例會收到消息。

以下命令爲目標隊列爲Q1的主題「/ SPORTS/HOCKEY」創建持久訂閱。

DEFINE SUB(SPORTSUB) TOPICSTR(/SPORTS/HOCKEY) TOPICOBJ(SPORT) DESTQ(Q1) 
+0

要清楚,DESTQ將在appl集羣和主題「之間」,正確嗎? – bmw0128

+0

如果我這樣做,是否也可以有其他訂閱者的話題,而不僅僅是DESTQ? – bmw0128

+0

是的,DESTQ位於應用程序和主題之間。是的,可以有其他的用戶,耐用和不耐用的話題。 – Shashi