2010-08-06 61 views

回答

1

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

只要确保像MAXUPROCS这样的操作系统内核设置被设置为允许WMQ运行足够的线程来接收连接并且像MAXHANDSMAXCHANNELS这样的WMQ设置被调高以适应负载。请记住,工作单元是线程范围的,因此每个线程独立于其他的同步点 - 例如,当您在线程内发出COMMIT时,它只会承担特定线程放置的消息,假设它具有专用连接。队列有一个DEFSOPT(默认共享选项)的属性,但这涉及有多少个输入句柄可以处于活动状态。即使您打开队列以进行独占输入,也可以有多个线程写入它。

另外,截至2011年9月,WMQ的v6.x将会报废。现在开始计划让v7继续保留在受支持的版本上。如果您正在使用WMQ客户端连接,请升级客户端以及QMgr。 v7客户端可与v6 QMgr正常工作,并可独立升级。当然,它与v6.x QMgr一起使用时仅支持v6功能。您可以下载v7客户端为SupportPac MQC7

+0

我想我没有把问题正确..我正在写一个Java程序来连接队列和发送消息。并试图了解是否可以使用多线程方式将消息发送到远程IBMMQ服务器上的同一队列。 – user412918 2010-08-06 14:02:33

+1

是的。我就是这样解释这个问题的。我已经更新了答案,以解释许多线程都需要自己的连接,并提供了一个指向讨论此主题的手动部分的链接。 – 2010-08-07 15:26:17

相关问题