【问题标题】:We use IBM MQ6.1. Can we send messages to Queue using multi threading?我们使用 IBM MQ6.1。我们可以使用多线程将消息发送到队列吗?
【发布时间】:2011-08-18 05:23:33
【问题描述】:

我们使用 IBM MQ6.1。并使用 IBM API 将消息发送到队列。 由于我们需要发送大量消息,想知道我们是否可以使用多线程并将消息发送到同一个队列。 有什么建议吗?

【问题讨论】:

    标签: ibm-mq mq


    【解决方案1】:

    当然。您可以拥有内存和 CPU 允许的尽可能多的线程。如果您想看到性能改进,每个线程都需要它自己的连接句柄。如果您使用单个连接句柄,则来自多个线程的所有 GET 和 PUT 活动都通过连接句柄同步。如果您使用许多连接句柄,则 GET 和 PUT 活动可以并行发生。有关详细信息,请参阅 WMQ 使用 Java 手册中的 Multithreaded programs。

    只需确保将 MAXUPROCS 等 OS 内核设置设置为允许 WMQ 运行足够的线程来接收连接,并且将 MAXHANDS 和 MAXCHANNELS 等 WMQ 设置提高以适应负载。请记住,工作单元是线程范围的,因此每个线程都独立于其他线程以用于同步点 - 例如,当您在线程内发出 COMMIT 时,它只提交该特定线程放置的消息,假设它具有专用连接。队列具有DEFSOPT 的属性(默认共享选项),但这与可以激活多少输入句柄有关。即使您为独占输入打开队列,您也可以有许多线程写入它。

    此外,WMQ 的 v6.x 将于 2011 年 9 月结束生命周期。现在开始计划升级到 v7 以继续使用受支持的版本。如果您使用 WMQ 客户端连接,请升级客户端以及 QMgr。 v7 客户端可以与 v6 QMgr 一起正常工作,并且可以独立升级。当然,当与 v6.x QMgr 一起使用时,它仅支持 v6 功能。您可以将 v7 客户端下载为SupportPac MQC7。

    【讨论】:

    • 我想我没有正确提出问题。我正在编写一个java程序来连接到队列并发送消息。并试图知道我是否可以以多线程方式将消息发送到远程 IBMMQ 服务器上的同一个队列。
    • 是的。我就是这样解释这个问题的。我更新了答案,解释了许多线程都需要自己的连接,并提供了一个指向讨论该主题的手册部分的链接。
    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多