我想在发送 JMS 消息时设置所需的队列管理器。目前,我可以在 JMSReplyTO 方法中设置目标队列,但我不知道如何指定队列管理器。
TextMessage message = queueSession.createTextMessage();
message.setText(messageStr);
message.setJMSReplyTo(destinationQueue);
queueSender.send(message);
在这里(对于 WebSphere MQ):
MQQueue replyToQ = new MQQueue(QMgrName, ReplyQueue);
Destination replyTo = (Destination) replyToQ;
message.setJMSReplyTo(replyTo);
你使用的是哪个 MQ,但你的类名看起来像 WebSphere 的,所以我猜就是这样。
队列管理器名称可以在连接工厂上设置,然后再从连接工厂获取连接。 使用 MQConnectionFactory#setBrokerQueueManager(String)。
该方法的 IBM javadocs 在这里,在 publib 上。
如果您使用的是 ActiveMQ,则无法设置队列管理器,因为 ActiveMQ 不支持该抽象。 您可以将代理命名为您希望消息用作其队列管理器的任何名称,因为 ActiveMQ 代理和 MQ 管理器大致相同。 不过,我不知道这是否有帮助。 您可能需要切换到使用 WebSphere 自己的 MQ。