繁体   English   中英

使用JMS作为请求/响应服务

[英]Using JMS as a request/response service

使用JMS作为请求/响应服务有各种实现。 我想知道理想的实现。 以下是这些不同的实现。


1)永久请求队列,动态响应队列

所有请求消息都发布到指定回复队列的单个请求队列中。 该服务使用请求消息并将消息发布回动态回复队列。

  • 不需要相关ID。
  • 其相应响应队列的多个消费者

2)永久请求队列,永久响应队列

所有请求消息都发布到单个请求队列中,在jms属性中指定唯一ID。 唯一ID存储在本地。 服务使用请求消息并将消息发布回响应队列。 单个响应使用者将使用该消息并根据唯一ID进行适当操作。

  • 需要相关ID。
  • 响应队列的单个使用者

3)永久请求队列,永久响应主题

所有请求消息都发布到单个请求队列中,在jms属性中指定唯一ID。 该服务使用请求消息,并在jms属性中将具有相同唯一ID的消息发布回主题。 响应的使用者将设置消息选择器以仅选择包含唯一ID的消息。

  • 需要相关ID。
  • 响应主题的多个消费者

有谁知道其他实现? 哪些实现是使用JMS作为请求/响应服务的理想解决方案?

这就是我通常所做的:请求发布到'永久','众所周知'队列。 在请求消息中,sender指定replyTo队列,该队列可以是永久性的或动态的,具体取决于您的应用程序 需求。

应始终至少使用合理唯一的id / correlation id来跟踪日志文件中的消息的可跟踪性。它可能位于JMS头级别或有效负载级别(例如SOAP messageId),具体取决于您的要求。

我已经使用了第一个和第三个实现。 我不确定第二个,因为当一个消费者可能饿死另一个消费者时,多个消费者的单个队列会引起问题。 为避免这种情况,我们可能需要有一个调度程序 ,这可能导致可伸缩性问题,因为需要为每个使用者添加新队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM