Asynchronous 同步公共api应该如何与基于消息的服务集成?

Asynchronous 同步公共api应该如何与基于消息的服务集成?,asynchronous,spring-cloud,synchronous,microservices,messagebroker,Asynchronous,Spring Cloud,Synchronous,Microservices,Messagebroker,我一直在阅读有关微服务的书籍,在Jonas Bonér的反应式微服务架构(可免费下载)中发现了许多有趣的建议。他强调miroservices之间需要异步通信,但表示外部客户端的api有时需要同步(通常是REST) 我一直在想,从微服务发回的异步响应消息应该如何最好地路由回等待的客户端。对我来说,最明显的方法是在处理请求时发送的所有消息中记录请求id之类的内容,然后将此id复制到服务发送的响应消息中。公共API将在处理请求时阻塞,收集具有匹配id的所有预期响应消息,然后最终将响应发送到客户端 我说

我一直在阅读有关微服务的书籍,在Jonas Bonér的反应式微服务架构(可免费下载)中发现了许多有趣的建议。他强调miroservices之间需要异步通信,但表示外部客户端的api有时需要同步(通常是REST)

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

我说的对吗?有更好的方法吗?是否有任何框架将执行此路由的工作从开发人员手中夺走(我正在研究SpringCloudStreams等,但其他框架也会很有趣)

他强调了两个系统之间异步通信的必要性 miroservices,但表示外部客户端的API有时需要 保持同步(通常是静止)

在处理客户端-后端通信时,您可以有两种类型的操作,它们应该分别处理(请看以下想法):

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

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

这有意义吗