【问题标题】:MQPUT fails:2035 when enabling AMS in multi threaded environment在多线程环境中启用 AMS 时 MQPUT 失败:2035
【发布时间】:2017-04-24 22:24:25
【问题描述】:

我正在尝试使用 IBMMQ 中的 AMS 功能。在启用 AMS 并对特定队列设置策略后,我尝试在应用程序的主线程中使用 MQPUT 将消息放入队列,并且成功了。

之后,我尝试在创建的单独工作线程(posix 线程)中提供 MQCONN 和 MQPUT 库命令,但系统总是失败,因为该特定队列的错误代码为 2035。

我们不能将 AMS 工具与多线程一起使用吗?需要进行哪些设置或更改才能使其正常工作?

(我们的IBMMQ版本是7.5/unix readhat/客户端模式)

【问题讨论】:

    标签: ibm-mq mq websphere-mq-ams


    【解决方案1】:

    在多线程应用程序中,运行应用程序的用户 ID 仍将是同一用户,因此应该是相同的设置。但是,AMKERR01.LOG 会准确地告诉您安全错误到底是什么。

    【讨论】:

    • 是的,用户 ID 应该是这样的,不应该更改。但问题是在 IBMMQ 中它不是那样工作的。这是应用程序的输出(在主线程和工作线程中使用 amqsputc) /// 主线程 //// 在 MainApp 的 Proc 运行用户是 -> dev50 示例 AMQSPUT0 开始目标队列是 T.OUTQUEUE Hello World !! amqsput 成功 /// 工作线程 //// 在 Proc Run at AppWorkerThread 用户是 -> dev50 Sample AMQSPUT0 start target queue is T.OUTQUEUE MQOPEN end with reason code 2035 unable to open queue for output Sample AMQSPUT0 end
    • 在 /var/mqm 中的任何位置也不会打印关于错误 2035 的错误日志。
    • 在应用程序中收到 2035 返回码后,队列管理器 AMGERR01.LOG 中的最后几个错误是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多