我希望在 Java EE 容器中使用 JMS 实现同步请求-回复模式。序列将是这样的
- 浏览器向 Web 应用程序发出数据请求。这是一个阻塞请求(比如在线程 T1 上)。
- Web 应用程序需要连接到远程 Web 服务才能完成上述请求。因此它形成一个请求并将其放置在一个队列中(还声明了一个回复队列)。
- 远程服务处理请求并将响应放入步骤 2 中声明的回复队列
- 响应从 web 应用程序中的回复 Q 中读取,并可供步骤 1 的阻塞线程 T1 使用。
我已按照 T.Rob 提供的答案(如何将 MQ 服务器回复消息与正确的请求相匹配)
QueueReceiver queueReceiver =
session.createReceiver(destination, "JMSCorrelationID='customMessageId'");
TextMessage receivedMessage = (TextMessage)queueReceiver.receive( 15000 );
在可能有多个并发请求进入的 Java EE 容器(Web 模块)中运行时,上述解决方案是否有效?