如何从 REST 到消息队列进行通信

How to communicate from REST to message queue

一个 REST 微服务怎么可能与另一个混合微服务通信,这意味着他可以与 REST 和消息队列通信。例如 API-网关。对于外界,他可以通过 REST 与应用程序、手机进行通信,但来自后端的通信是通过消息队列进行的。

用例:

我的主页想从数据库中获取车辆。他通过 GET 请求请求 API-Gateway。 API-网关接收 GET 请求并将其发布到消息队列中。另一个微服务获取消息并发布结果。然后 API-gateway 使用结果并将其作为响应发回。

我该如何实施?我使用 Spring 引导 Apache Kafka 吗?我需要实现异步通信吗?

(抱歉是德语)

有一些方法可以解决这种情况。

您可以为每个客户端请求创建主题并等待另一端的回复,例如,DriverService 将读取请求消息,获取您的所有数据并将其发布到您的客户端请求主题。一旦您使用了响应消息,您就销毁了该主题。

但是 'temporary' 主题可能需要很长时间才能删除(如果没有配置避免这种情况,例如 delete.topic.enable 属性)在请求-响应交互中,您需要监控可能的主题过度增长。

Websocket 是另一种可能的解决方案。您的客户端将开始收听一个特定的主题,之前与您的服务器达成一致,然后在特定的超时时间内您将等待响应,此时您的 DriverService 将发布到该特定的套接字通道。

Spring Boot 为您提供了 Kafka 和 Websockets 的优秀入门工具。如果您期望有大量交易,我会采用混合策略,使用 Kafka 帮助我的后端扩展和处理所有交易,然后通过 Websocket 响应客户端。