2012-12-11 252 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