我们通过 JMS 使用请求-响应通信模型与外部系统合作。
假设,用户从浏览器向一个队列发送一条请求消息(通过导航到映射到相应 servlet 的某个 URL)。然后,有一个 MDB 异步接收另一个 JMS 队列上的消息。有没有办法返回发起请求的用户并在同一 session 中的浏览器中显示该消息?
到目前为止,我想到的唯一一件事就是将此响应保存在数据库中。然后,最初触发请求的 servlet 将等待数据可用并尽快显示。
但是有没有其他干净的方法而不使用中间存储来实现这一点?
更新
请求队列和响应队列不同。它们之间的唯一联系是响应包含与请求中相同的 JMS correlationID
。
最佳答案
我不知道您是否可以解决将响应存储在数据库中的问题。我们在应用程序中执行类似的操作,将相关 ID 附加到 session ,浏览器进行 ajax 调用来检查数据库中的响应更新。到目前为止,我们的扩展效果非常好。
http 的 rqeuest 响应性质与异步消息处理并不齐头并进。不过我还没有尝试过像 WebSockets 这样的东西。
关于java - 在浏览器中显示传入的 JMS 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018333/