使用MQCB时的MQPUT:MQRC_HCONN_ASYNC_ACTIVE

时间:2013-04-23 09:40:31

标签: ibm-mq mq

我们的流程需要从本地Q管理器上的主题读取消息,并在同一本地Q管理器上写入不同的主题。

要阅读我们使用MQCB的邮件。消息到达进程的回调函数。但是,虽然回调仍然是已注册的,但我们无法将MQPUT条消息发送到其他主题。

我们收到一条错误消息: 2500 : MQRC_HCONN_ASYNC_ACTIVE An attempt to issue an MQI call has been made while the connection is started

显然,单个连接句柄不能用于读写。我们必须暂停MQCBMPUT消息并恢复MQCB以使其生效。

有没有办法避免不得不暂停和恢复?

提前致谢

1 个答案:

答案 0 :(得分:1)

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

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

<强>更新

MQRC_ALREADY_CONNECTED(2002)问题:您使用了什么MQCNO_HANDLE_SHARE_ *选项?建议您使用MQCNO_HANDLE_SHARE_BLOCK选项来解决此问题。我编写了一个示例程序,并使用MQCNO_HANDLE_SHARE_BLOCK选项在同一个线程上创建了两个连接。