在浏览器中显示传入的 JMS 消息

Display incoming JMS message in a browser

我们通过 JMS 使用请求-响应通信模型与外部系统合作。

假设,用户从他的浏览器向一个队列发送请求消息(通过导航到一些 URL 映射到相应的 servlet)。然后,有一个 MDB 异步接收另一个 JMS 队列上的消息。有没有办法返回发起请求的用户并在同一会话中在他的浏览器中显示该消息?

目前唯一想到的是将此响应保存在数据库中。然后,最初触发请求的servlet将等待数据可用并尽快显示。

但是有没有其他不使用中间存储的干净方法来实现这一点?

更新

请求和响应队列不同。它们之间的唯一联系是响应包含与请求中相同的 JMS correlationID

我不知道您是否可以绕过将响应存储在数据库中。我们在我们的应用程序中做了类似的事情,我们将相关 ID 附加到会话,浏览器进行 ajax 调用以检查数据库中的响应更新。到目前为止,我们的规模已经很好了。

http 的 rqeuest 响应性质与异步消息处理并不同步。不过,我还没有尝试过像 WebSockets 这样的东西。