需要根据以下方案在JMS和REST之间进行说明

时间:2016-07-20 11:21:28

标签: java web-services rest jms

如果应用程序A和应用程序B使用REST,当应用程序B需要从应用程序A完成服务(如调用应用程序A中的方法)时,应用程序B可以直接调用服务或发送对该服务的请求它需要。如果应用程序A和应用程序B使用JMS而不是REST,情况如何,应用程序B是否可以在需要时请求来自应用程序A的消息,或者使用JMS无法发出请求/请求消息?

2 个答案:

答案 0 :(得分:0)

在使用JMS的非常高的级别上,您可以创建队列并在其上设置侦听器

所以说每个应用程序可以有两个队列(requestQ和responseQ)。我将从应用程序A想要调用应用程序B的角度解释功能。

  1. 因此,当应用程序A想要与B进行交互时,它将发布一个 发信息给它的请求。
  2. 您可以使用Apache Camel这样的内容 端点。当它收到消息时,它会处理它并调用它 使用Camel HTTP Component
  3. 的休息终点
  4. 成功或错误时,camel可以使用Camel的JMS component将响应发布到A的responseQ,应用程序可以从中选择它并对其执行某些操作。
  5. 这是一个非常粗略的设计来解释工作原理,并且架构可以根据需求而有所不同,但是使用这种模式可以获得一些好处:

    • 故障转移:如果A在尝试拨打电话时B关闭怎么办?您可以在requestQ中保留请求,稍后再重试。
    • 异步性。
    • 系统B之类的东西在响应时可能比A慢。在这种情况下,A不必等待。
    • 对数据流进行细粒度控制。

    这本身就是一个非常广泛的话题。我建议阅读有关企业集成模式 Apache Camel 的内容,以便更好地理解。

答案 1 :(得分:0)

使用JMS,您无法从其他应用程序请求任何服务,并等待已处理的请求的响应返回。但如果唯一的问题是发布或向另一个应用程序发送一些消息,那么JMS是最好的,因为您不必等待任何响应从那里回来。简单地通过JMS体系结构将消息发送到定义的队列或主题。另一个应用程序只会从队列或主题中读取消息。但是,如果您需要执行任何特定服务并且必须使用有效响应,则REST架构将是合适的。因此,对于请求 - 响应框架,REST是最佳选择。