如何将同步公共API与基于消息的服务集成?

时间:2016-09-21 12:54:44

标签: asynchronous spring-cloud synchronous microservices messagebroker

我一直在阅读微服务,并在JonasBonér的Reactive Microservices Architecture(可免费下载here)中找到了许多有趣的建议。他强调了miroservices之间异步通信的必要性,但他说外部客户端的API有时需要同步(通常是REST)。

我一直在努力思考如何将从微服务发回的异步响应消息最好地路由回等待的客户端。对我来说,最明显的方法是在处理请求时记录所有发送的消息中的请求ID,然后将此id复制到服务发送的响应消息中。在最终将响应发送给客户端之前,公共API会在处理请求时阻塞,收集所有具有匹配ID的预期响应消息。

我在这里的右边线?有更好的方法吗?是否有任何框架从开发人员那里开始做这个路由的工作(我正在看Spring Cloud Streams等,但其他人也会很有趣)?

1 个答案:

答案 0 :(得分:1)

  

他强调需要进行异步通信   miroservices,但表示外部客户端的API有时需要   同步(通常是REST)。

在处理客户端 - 后端通信时,您可以进行几种类型的操作,并且应该单独处理它们(查看CQS的想法):

  • 状态更改操作 - 它们应该是单向触发并忘记使用消息传递(可以是客户端调用HTTP API和api调度消息)

  • 读取操作:同步(请求响应)操作(使用HTTP API),这不涉及任何消息传递

这有意义吗?