【问题标题】:Call another Rest API from my Rest API through ActiveMQ通过 ActiveMQ 从我的 Rest API 调用另一个 Rest API
【发布时间】:2021-09-01 00:04:52
【问题描述】:

我可以使用 Spring Boot 通过 ActiveMQ 从我的 API 调用另一个 Rest API 吗?我读了这个documentation,我看到了一些例子,但它们是从同一个 API 调用的,但我想通过 ActiveMQ 调用另一个 API URL。

我在一台服务器上有一个通过 REST 公开的 Spring Boot 应用程序 (B),我在另一台服务器上有另一个 Spring Boot 应用程序(REST 客户端)(A)。

A 是一个自动化的 Java 应用程序,它侦听某个端口,当数据到达时它发出请求,然后将其 POST 到通过 REST 公开的 B 应用程序。但是,现在我想像这样在中间添加 ActiveMQ:

A --> ActiveMQ--> B

ActiveMQ 将始终是 A 和 B 之间的中间人,但我必须使应用程序架构像应用程序 B 关闭时数据将从应用程序 A 存储在 ActiveMQ 中,并且如果两个应用程序都在运行 A 发送数据到ActiveMQ 和 B 将该数据出列。

我怎样才能做到这一点?

我在网上看到了很多示例,但他们通过在 REST API 中传递 [@PostMapping][@GetMapping] 来做到这一点,但这并没有达到我的目的。

【问题讨论】:

  • 是的,你是对的我有一个 Spring Boot 应用程序(B)通过 REST 在另一台服务器上公开,我在另一台服务器上有另一个 Spring Boot 应用程序(REST 客户端)(A)将生成一个请求并将其发送给 B,但现在我必须传递哪个 URL,因为我想将我的数据存储在 ActiveMQ 中,所以如果 B 应用程序关闭,它仍然会存储数据,当 B 应用程序再次启动时,它会将相同的数据从队列中取出。
  • 好的,我会告诉你我必须做什么,A 是一个自动化的 Java 应用程序,它在某个端口上侦听,当数据到来时它发出请求,然后将其发布到通过 REST 公开的 B 应用程序,但是现在我想像这样在中间添加 ActiveMQ A --> ActiveMQ--> B,所以如果 B 关闭,A 将数据存储在 ActiveMQ 中,当 B 再次启动时,它将对数据进行 deque,我怎么能做到这一点,我看到了网上有很多例子,但他们通过在 REST api 中传递 [@PostMapping] 和 [@GetMapping] 来做到这一点,但这并没有达到我的目的。
  • ActiveMQ 将始终是 A 和 B 之间的中间人,但我必须制作应用程序架构,例如应用程序 B 已关闭数据将从应用程序 A 存储在 ActiveMQ 中,并且如果两个应用程序都在运行 A 发送数据到 ActiveMQ 和 B 出列该数据。

标签: rest jms activemq spring-jms


【解决方案1】:

可以更新调用(REST 客户端)A 的程序以使用任意数量的协议(JMS、REST、STOMP 等)向 ActiveMQ 发送数据。由于您使用的是 Spring,因此您可能需要考虑 JMSTemplate,或者使用 ActiveMQ 的 REST 端点发送到队列(即 queue://APPB.INPUT)。

消费者端将需要一个额外的组件,它要么是独立的,要么是 Spring Boot 应用程序 B 的一部分。可能是从队列中读取的 Spring JMS 侦听器或 Camel 路由(即 queue://APPB.INPUT),然后将数据发送到应用程序 B REST 端点。

当前设计:

App A (REST Client) -> App B (REST Service)

事件驱动/异步设计:

App A (JMS Producer Client) -> ActiveMQ -> App B (JMS Consumer Client) -> App B (REST Service)

【讨论】:

  • 感谢您的明确回答,我明白您的意思,但假设我在 App B 中添加 JMS Consumer Client,那么如果我必须停止 App B 并且 App A 仍在运行,那么将ActiveMQ 将存储来自 App A 的数据?
  • 是的,这是 ActiveMQ 的主要用例。 ActiveMQ 存储来自 A 的数据,而 B 因计划内或计划外中断而停机。生产者和消费者不需要需要同时运行。
  • 谢谢,让我实施解决方案,我会尽快回复您。
猜你喜欢
  • 1970-01-01
  • 2019-04-20
  • 2015-04-01
  • 1970-01-01
  • 2011-04-09
  • 2020-07-17
  • 1970-01-01
  • 2020-08-04
  • 2022-12-16
相关资源
最近更新 更多