Jms 让消息队列订阅主题

Jms 让消息队列订阅主题,jms,websphere,ibm-mq,Jms,Websphere,Ibm Mq,我有一个主题有两个订户。但是,其中一个订阅服务器将部署在集群中。因此,实际上(我认为?)集群将被视为多个订户。 我需要确保集群只使用一条消息 我不知道该怎么做。 是否可以在集群和主题之间插入队列,然后让集群应用程序只处理插入的队列 如果这是可能的,通常如何使队列“订阅”主题 我听到的另一个想法是在集群中创建克隆订户,有人听说过这一点来解决这个问题吗 另一个想法是去掉这个主题,只使用两个队列,这似乎是一个安全的解决方案 使用WebSphere MQ,您可以使用持久订阅来实现这一点 以管理方式创建持

我有一个主题有两个订户。但是,其中一个订阅服务器将部署在集群中。因此,实际上(我认为?)集群将被视为多个订户。 我需要确保集群只使用一条消息

我不知道该怎么做。 是否可以在集群和主题之间插入队列,然后让集群应用程序只处理插入的队列

如果这是可能的,通常如何使队列“订阅”主题

我听到的另一个想法是在集群中创建克隆订户,有人听说过这一点来解决这个问题吗

另一个想法是去掉这个主题,只使用两个队列,这似乎是一个安全的解决方案


使用WebSphere MQ,您可以使用持久订阅来实现这一点

以管理方式创建持久订阅并指定目标(基本上是队列),该目标将接收在指定主题上发布的发布。然后,集群应用程序可以从该目的地获取消息。由于正在从队列接收发布,因此只有应用程序的一个实例将获得消息

下面的命令为主题“/SPORTS/HOCKEY”创建持久订阅,目标队列为Q1

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

您可以使用持久订阅来实现这一点

以管理方式创建持久订阅并指定目标(基本上是队列),该目标将接收在指定主题上发布的发布。然后,集群应用程序可以从该目的地获取消息。由于正在从队列接收发布,因此只有应用程序的一个实例将获得消息

下面的命令为主题“/SPORTS/HOCKEY”创建持久订阅,目标队列为Q1

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

当您说“其中一个订阅服务器将部署在集群中”时,您是指应用服务器集群还是WebSphere MQ集群?因为在一种情况下,您有多个实例在队列上竞争消息,而在另一种情况下,您有多个队列实例,每个实例都有自己的数据副本。答案大不相同,这取决于您对“集群”一词的预期用途。如果您指的是应用服务器集群,那么Shashi的响应效果很好。是的,我指的是应用服务器集群,thx当您说“其中一个订阅者将部署在集群中”时,您指的是应用服务器集群还是WebSphere MQ集群?因为在一种情况下,您有多个实例在队列上竞争消息,而在另一种情况下,您有多个队列实例,每个实例都有自己的数据副本。答案大不相同,这取决于你对“集群”这个词的预期用途。如果你是指应用服务器集群,那么Shashi的回答效果很好。是的,我是指应用服务器集群,thxto说得很清楚,DESTQ将在某种程度上介于应用服务器集群和主题之间,对吗?如果我这样做,还会有其他订阅主题的用户吗,不仅仅是DESTQ?是的,DESTQ介于应用程序和主题之间。是的,主题可以有其他订阅者,包括持久订阅者和非持久订阅者。需要明确的是,DESTQ将介于appl集群和主题之间,对吗?如果我这样做,除了DESTQ之外,还会有其他订阅者订阅主题吗?是的,DESTQ位于应用程序和主题之间。是的,该主题还可以有其他订阅者,包括持久订阅者和非持久订阅者。