【问题标题】:Is middleware needed for a REST service to be consumed?使用 REST 服务是否需要中间件?
【发布时间】:2015-12-12 12:15:16
【问题描述】:
有一个提供物流服务的外部网络服务(基于 REST)。为了从我们的应用程序(即 java 堆栈)中使用它,我创建了一个客户端库(使用 jersey 和 jackson,这是一个自包含的 jar 文件,并提供了简单的 getter 和 setter 来使用)。使用这个 REST 服务只需要这个 jar 文件(它被用作可重用的资产)。
但是,我们的一位客户问道,“既然我们已经有 ESB(IBM 的中间件)用于我们现有的集成,为什么我们不能也通过 ESB 进行这种集成?”
- 是否可以使用 ESB(或 MQ)等中间件来使用基于 REST 的服务?如果有,怎么做?
- 这样做是否明智?
- 我可以向我的客户提出什么论据来告诉他们这可能行不通?
谢谢。
【问题讨论】:
标签:
rest
jersey
integration
esb
mq
【解决方案1】:
Is it possible to consume the REST based service using a middleware such as ESB(or MQ) ? If so, how ? -
是的。每个 ESB 都有其语法/API。如果您已经在处理 REST/http 请求,应该不难理解。注意,MQ 是一个允许异步通信的消息代理。例如,想要使用 REST 服务的应用程序可以向代理发送消息,而不是等待来自外部服务的响应。反过来,消息代理可以将 REST 与外部服务通信。消息代理可能会公开一个 REST 接口来使用消息。但这一切都取决于用例。您可能希望同步调用 REST 服务。
大多数 ESB 支持调用外部 Web 服务 REST/SOAP。所以 ESB 并不一定意味着 MQ。
Will it be wise to do it ?
这取决于。许多组织将 ESB/网关设置为策略并路由/过滤/管理所有外部路由。还可以管理负载、HA 等。
What arguments can I posit to my client to tell them this may not work ?
它肯定会奏效。您应该根据您的要求评估使用 ESB 是否是开销。
【讨论】:
-
感谢 techuser 的回答。我主要关心的是有问题的 REST 服务基于 jsonapi.org 规范 - 这不是最容易使用的。我用java编写的客户端库,如果我们必须走ESB路线,它可以重复使用吗(否则所有的努力都将被浪费)?是否有任何教程/信息可以指向我通过 ESB 使用 REST。恐怕@Robert Maskel 提供的链接是针对 Bizagi 的,对我没有多大帮助。再次感谢。