我们通过JMS使用请求 - 响应通信模型与外部系统一起工作。
假设用户从他的浏览器向一个队列发送请求消息(通过导航到映射到相应servlet的某个URL)。然后,有一个MDB在另一个JMS队列上异步接收消息。有没有办法再回到发起请求的用户并在同一会话中在浏览器中显示该消息?
到目前为止,唯一想到的是将此响应保存在数据库中。然后,最初触发请求的servlet将等待数据可用并尽快显示它。
但是,有没有其他干净的方式没有使用中间存储来实现这一点?
更新
请求和响应队列不同。它们之间唯一的连接是响应包含与请求中相同的JMS correlationID
。
答案 0 :(得分:1)
我不知道你是否可以在db中存储响应。我们在应用程序中执行类似的操作,其中将关联ID附加到会话,并且浏览器进行ajax调用以检查db中的响应更新。到目前为止,我们的表现相当不错。
http的rqeuest响应特性与异步消息处理并不相关。我没有尝试像WebSockets这样的东西。