Ibm mq 使用MQCB时的MQPUT:MQRC\U HCONN\U ASYNC\U活动

Ibm mq 使用MQCB时的MQPUT:MQRC\U HCONN\U ASYNC\U活动,ibm-mq,mq,Ibm Mq,Mq,我们的流程需要从本地Q管理器上的一个主题读取消息,也需要向同一个本地Q管理器上的另一个主题写入消息 为了阅读消息,我们使用了MQCB。消息到达进程的回调函数。但是,尽管回调保持注册状态,但我们无法将MQPUT消息发送到其他主题 我们得到一个错误,上面写着: 2500:MQRC\u HCONN\u ASYNC\u活动 在连接启动时尝试发出MQI调用 显然,单个连接句柄不能用于读写。我们必须暂停消息的MQCB,MPUT,然后恢复MQCB,使其正常工作 有没有办法避免暂停和恢复 提前感谢是的,这是使用

我们的流程需要从本地Q管理器上的一个主题读取消息,也需要向同一个本地Q管理器上的另一个主题写入消息

为了阅读消息,我们使用了
MQCB
。消息到达进程的回调函数。但是,尽管回调保持注册状态,但我们无法将
MQPUT
消息发送到其他主题

我们得到一个错误,上面写着:
2500:MQRC\u HCONN\u ASYNC\u活动
在连接启动时尝试发出MQI调用

显然,单个连接句柄不能用于读写。我们必须暂停消息的
MQCB
MPUT
,然后恢复
MQCB
,使其正常工作

有没有办法避免暂停和恢复


提前感谢

是的,这是使用MQCB时的预期行为。您可以采取两种方法:

1) 创建到同一队列管理器的另一个连接以发布消息。
2) 如果您的设计是在收到回调函数上的消息时发布消息,则从回调函数本身发布消息

更新


MQRC_已连接(2002)问题:您使用了什么MQCNO_句柄_共享选项?建议您使用MQCNO_HANDLE_SHARE_BLOCK选项来解决此问题。我编写了一个示例程序,并使用MQCNO\u HANDLE\u SHARE\u BLOCK选项在同一线程上创建了两个连接。

是的,这是使用MQCB时的预期行为。您可以采取两种方法:

1) 创建到同一队列管理器的另一个连接以发布消息。
2) 如果您的设计是在收到回调函数上的消息时发布消息,则从回调函数本身发布消息

更新


MQRC_已连接(2002)问题:您使用了什么MQCNO_句柄_共享选项?建议您使用MQCNO_HANDLE_SHARE_BLOCK选项来解决此问题。我编写了一个示例程序,并使用MQCNO\u HANDLE\u SHARE\u BLOCK选项在同一线程上创建了两个连接。

我们尝试了第一种方法来创建到同一队列管理器的两个连接。关键是,每个进程的每个队列管理器只能有一个连接。如果我们尝试创建另一个连接,它会发出警告,指出与队列管理器的连接已经存在,并给出相同的连接句柄。感谢您的建议。我们使用MQCNO_HANDLE_SHARE_块作为连接选项创建了两个连接。非常感谢。我们尝试了第一种方法来创建两个到同一队列管理器的连接。关键是,每个进程的每个队列管理器只能有一个连接。如果我们尝试创建另一个连接,它会发出警告,指出与队列管理器的连接已经存在,并给出相同的连接句柄。感谢您的建议。我们使用MQCNO_HANDLE_SHARE_块作为连接选项创建了两个连接。谢谢。