基于来自 IBM MQ 的多线程场景的 corretionID 获取响应

Get responses based on corretionID from IBM MQ for multi-thread scenario

我的要求是:

我有一个 IBM MQ,它在 20 台服务器之间共享并运行 JMS 客户端。现在队列中将有一个特定的消息用于特定的线程。线程需要使用一个correlationID从MQ中的所有消息中获取消息。

当我使用 onMessage() 时,不确定哪个线程将收听消息。假设 server-1 正在等待消息,但 server-15 正在侦听它。 Server-1 最终会超时,即使服务器 1 中的线程有一条消息。

请建议我们如何在不引入主要性能问题的情况下处理这种情况。

在侦听器容器上使用 MessageSelector。如果 correlationId 在标准 JMSCorrelationID header 中,选择器将是 JMSCorrelationID=foo 以接收所有 foo 消息。