gpt4 book ai didi

java - MQSeries - 任何允许新接收器接管连接的设置?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:32:19 27 4
gpt4 key购买 nike

我们知道可以配置 MQ 服务器,如果已经有接收者连接到同一个 MQ 队列,新的接收者将无法连接到 MQ 服务器。错误将如下所示:

Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 调用失败,compcode '2' ('MQCC_FAILED') 原因 '2042' ('MQRC_OBJECT_IN_USE')

但是有什么方法可以配置服务器或客户端以允许新的接收器连接到 MQ 服务器并断开任何现有的接收器连接?

下面是目前我的接收器如何连接到服务器。我想知道是否可以对 setIntProperty 做些什么。

cf = new MQQueueConnectionFactory();
cf.setHostName(mqHost);
cf.setPort(mqPort);
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setQueueManager(mqQueueManager);
cf.setChannel(mqChannel);

conn = (MQQueueConnection) cf.createQueueConnection();
session = (MQQueueSession) conn.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
queue = (MQQueue) session.createQueue(mqQueue);
receiver = (MQQueueReceiver) session.createReceiver(queue);

谢谢!

格里

最佳答案

好的,您在这里混合了不同的概念。您的应用程序正在使用 CLNTCONN channel 连接到 QMgr 的 SVRCONN channel 。在内存和系统资源允许的情况下,Yopu 可以在 SVRCONN channel 上拥有尽可能多的连接。连接不是问题。

“2042”(“MQRC_OBJECT_IN_USE”)表示程序正在获得对队列的独占访问权。有两个修复方法:

  1. 不要对队列使用独占访问。检查DEFSOPT队列的值以查看它是否设置为 EXCLSHARED。如果您需要它可以共享,请确保队列设置反射(reflect)了这一点。
  2. 如果您需要队列保持排他性(例如因为消息依赖于顺序),请在尝试新连接之前停止之前的连接。当程序没有正常关闭连接时,孤立的 channel 代理会保持连接的队列处于打开状态。最终代理超时,所有独占输入队列再次可用。如果节目离开孤立 channel ,请修复这些节目。作为短期措施,您可以手动停止孤立 channel 以释放对输入队列的锁定。

关于java - MQSeries - 任何允许新接收器接管连接的设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com