如何从 REST 通信到消息队列

古切尔卡本

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

用例:

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

我该如何实施?我是否将 Spring Boot 与 Apache Kafka 一起使用?我需要实现异步通信吗?

(抱歉是德语) 在此处输入图片说明

迪奥戈·西尔维奥

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

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章