Ibm mq 标识已连接客户端的WebSpre MQ

Ibm mq 标识已连接客户端的WebSpre MQ,ibm-mq,Ibm Mq,我使用websphere mq和JMS API连接到mq。我使用消息选择器连接和分组消息 实际上,我的问题是,在某些情况下,JMS客户机可以与相同的消息选择器(关联ID)连接,因此每当任何客户机尝试连接到MQ时,我需要一种方法来检查是否存在具有相同消息选择器的任何其他客户机已经连接,如果存在,那么我需要阻止他连接,我将中止他的连接 在连接之前,有没有办法拦截Websphere MQ连接 问候,, Pravin您不能在连接时直接执行此操作,因为在JMS中,消息选择器在您创建连接时未定义:即,您首先

我使用websphere mq和JMS API连接到mq。我使用消息选择器连接和分组消息

实际上,我的问题是,在某些情况下,JMS客户机可以与相同的消息选择器(关联ID)连接,因此每当任何客户机尝试连接到MQ时,我需要一种方法来检查是否存在具有相同消息选择器的任何其他客户机已经连接,如果存在,那么我需要阻止他连接,我将中止他的连接

在连接之前,有没有办法拦截Websphere MQ连接

问候,,
Pravin

您不能在连接时直接执行此操作,因为在JMS中,消息选择器在您创建连接时未定义:即,您首先执行此操作

连接c=myConnectionFactory.createConnection()

然后再做

messagecon=mySession.createConsumer(myDestination,mySelector)

因此,当您连接时,队列管理器无法知道您随后将使用什么选择器(或者即使您将指定一个选择器)

一种可能是使用持久订阅,请参阅

(或跨域JMS 1.1等效版本)。它们由clientId、订阅者名称和主题的组合唯一标识,JMS规范要求

如果另一个具有相同clientID的连接已在运行。。。JMS提供程序应该检测重复的ID并抛出InvalidClientIndexception


客户端ID是在ConnectionFactory上指定的,因此更接近您想要的,尽管切换到持久发布/订阅并不一定是一个简单的选项。在考虑这一点之前,您可能应该看看是否有针对“JMS客户端可以使用相同的消息选择器连接的情况”的应用程序级修复程序。

谢谢您的回复。实际上,我已经尝试使用相同的客户端Id,但MQ允许连接,因此我也没有得到任何异常。据我所知,客户端Id只会通过持久发布/订阅进行检查,不会在点对点或非持久发布/订阅模式下强制执行