背景
Spring Boot和Spring Cloud为我们提供了一个使用不同通信方式快速构建微服务方式。我们可以基于Spring Cloud Netflix库创建同步REST微服务,可以创建使用Spring WebFlux在Netty上部署的异步,反应式微服务,并将其与Spring Cloud库成功结合,可以使用Spring Cloud Stream和Apache Kafka或RabbitMQ等消息代理,基于发布/订阅模型来实现消息驱动的微服务。我们演示基于RabbitMQ代理有效地构建,扩展,运行和测试消息传递微服务。
![032f28d1bcedd190eb226612bdfe4bab.png](https://i-blog.csdnimg.cn/blog_migrate/4c7cbd9159a382a0885c1090a83c3c86.jpeg)
架构
采用Spring Cloud Stream的功能,设计一个示例系统,该系统使用发布/订阅模型进行服务间通信。它提供三种微服务:订购服务,产品服务和帐户服务。应用程序订单服务公开了一个HTTP端点,该端点负责处理发送到我们系统的订单。所有传入的订单都被异步处理-订单服务准备并向RabbitMQ交换发送消息,然后响应调用客户端该请求已被接受进行处理。应用程序帐户服务和产品服务正在侦听传入交换机的订单消息。微服务帐户服务负责检查客户帐户中是否有足够的资金来实现订单,然后从该帐户中提取现金。微服务产品服务检查商店中是否有足够数量的产品,并在处理订单后更改可用产品的数量。帐户服务和产品服务都通过RabbitMQ交换(这是使用直接交换的一对一通信)发送处于运行状态的异步响应。收到响应消息后,微服务订单服务会设置订单的适当状态