2012 使用 IBM MQ 类 C++ 时出现 MQRC_ENVIRONMENT_ERROR

问题描述 投票:0回答:1

我正在使用适用于 Linux 的 IBM MQ(版本 9.3.0.16)可再发行库在队列管理器和我的示例 C++ 应用程序之间设置通信通道。我的目标是从队列异步获取消息。我可以使用

get()
调用以阻塞方式(在 while 循环内)同步读取消息,从而限制了性能和速度。因此,我需要使用异步方式来读取消息。 根据我的研究,我发现 C++ 类中没有直接函数来异步读取消息或定义回调。然而,我发现有一种方法可以使用基于 C 的方法来实现这一点。 我发现了一个据说可以实现相同任务的实用程序。我已经编译了它,但是当我执行它时,当我使用
MQCB()
函数调用注册回调时出现错误,如下所示:
MQCB ended with reason code: 2012

根据实用程序和ChatGPT,建议将队列管理器中的共享连接参数更改为10,我已经尝试过,但我仍然遇到相同的错误。

下面是包含我正在运行的 .c 代码的要点的 URL: 代码链接

仅供参考,队列管理器正在 Docker 容器中运行,我使用以下 URL 启动并运行该容器: 队列管理器

我没有主意,需要帮助。

我尝试更改共享连接参数,但没有成功。我仍然遇到同样的错误。

c++17 ibm-mq
1个回答
0
投票

您需要使用线程选项进行编译。特别是与 MQ 库的 _r 版本的链接。例如

cc -o myprog myprog.c -L/opt/mqm/lib64 -I/opt/mqm/inc -lmqm_r

如果不这样做,您通常会得到 2012(在客户端模式下运行时)或 2488(在本地绑定模式下运行)。

© www.soinside.com 2019 - 2024. All rights reserved.