【问题标题】:How to communicate from REST to message queue如何从 REST 通信到消息队列
【发布时间】:2018-05-16 17:38:50
【问题描述】:

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

用例:

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

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

(对不起它的德语)

【问题讨论】:

  • 我认为您应该等待休息控制器中的异步响应/超时。

标签: spring rest apache-kafka message-queue microservices


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2014-01-17
    • 2020-08-30
    • 2022-07-28
    • 2015-08-25
    • 2020-07-09
    • 2014-08-12
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多