我们使用IBM MQ6.1。并使用IBM API将消息发送到队列。 因为我们需要发送大量的消息,所以想知道我们是否可以使用多线程并将消息发送到同一个队列。 有什么建议吗?
答案 0 :(得分:1)
绝对。您可以拥有与内存和CPU允许的一样多的线程。如果要查看性能改进,每个线程都需要它自己的连接句柄。如果使用单个连接句柄,则通过连接句柄同步来自多个线程的所有GET和PUT活动。如果使用许多连接句柄,则GET和PUT活动可以并行进行。有关其他详细信息,请参阅WMQ使用Java手册中的Multithreaded programs。
只需确保将MAXUPROCS等操作系统内核设置设置为允许WMQ运行足够的线程来接收连接,并且MAXHANDS和MAXCHANNELS等WMQ设置会被提升以适应负载。请记住,工作单元是线程范围的,因此每个线程独立于同步点的其他线程 - 例如,当您在线程内发出COMMIT时,它只提交该特定线程放置的消息,假设它具有专用连接。队列具有DEFSOPT的属性(默认共享选项),但这与可以激活的输入句柄数有关。即使您打开独占输入的队列,也可以有许多线程写入它。
此外,WMQ的v6.x将于2011年9月停止使用。现在开始计划进入v7以保持支持的版本。如果您正在使用WMQ客户端连接,请升级客户端以及QMgr。 v7客户端可以与v6 QMgr一起使用,并且可以单独升级。当然,当与v6.x QMgr一起使用时,它仅支持v6功能。您可以将v7客户端下载为SupportPac MQC7。