首页 > 解决方案 > 何时使用 REST API,何时使用消息服务(例如 RabbitMQ)在微服务之间交换数据?

问题描述

我正在使用微服务架构构建一个系统,使用 RabbitMQ 作为消息传递服务。我有两个服务之间通信的用例,并且面临使用 RabbitMQ 实现它的困难。

Cart-Service 需要从 Product-Service 获取数据。在这种情况下,Cart-Service 可以发送一条消息,Product-Service 订阅该消息。但我发现 Product-Service 无法将数据发送回 Cart-Service。

您能否让我知道我在这种情况下使用 RabbitMQ 的方法是否正确?我应该在这个用例中应用任何其他方法吗?先感谢您。

标签: rabbitmqmicroservices

解决方案


为您的 rabbitMQ 消息路由使用事件驱动的命名约定。格式可以是<service>.<entity>.<action>,例如“cart.item.added”。

购物车服务订阅product.*.*消息,产品服务订阅消息cart.*.*

工作流程可能如下:

  • 购物车:发布“cart.item.added”消息。
  • 产品:接收“cart.item.added”消息,发布“product.product.read”一个
  • 购物车:收到带有产品信息的“product.product.read”消息。

如果您将 Node.js 用于微服务,您可以在此处阅读有关如何原型化 RabbitMQ 消息交换的更多信息:

https://medium.com/@krawa76/bootstrap-node-js-microservice-stack-4a348db38e51


推荐阅读