【发布时间】:2015-03-28 10:45:34
【问题描述】:
上次我在愤怒中使用 MQ(v6,从内存,在 HPUX 平台上)时,存在一个限制,即无法在进程内的线程之间共享连接。
如果您尝试从一个已经连接到队列管理器的线程执行另一个MQCONN,它会很快返回之前的句柄并警告说它正在重新使用它因此,只要您正确管理共享连接,单个线程就可以有效地与同一个队列管理器建立多个连接。
但是,如果您尝试从进程中的一个 不同 线程进行连接,则会给您一个不同的连接句柄,这会带来所有的缓慢,因为它必须经历所有的繁琐IPC、安全检查、运行另一个代理线程或进程等等。
我问这个问题的原因是,客户端已经看到了一种架构,其中线程是按需创建的(Windows 下的 C#),它们都将尝试连接到同一个队列管理器。他们提议运行 MQ 7.5,如果相关的话。
所有线程都将使用XMSFactoryFactory 进行连接,据称它提供了 MQ 连接池以提高效率,但是,如果仍然存在每个线程的连接要求并且线程它们自己没有被池化,我'我担心 MQ 连接池可能无用,因为每个新线程都需要一个新连接。
【问题讨论】:
标签: multithreading ibm-mq