rabbitmq - 何时使用 REST API,何时使用消息服务(例如 RabbitMQ)在微服务之间交换数据?
问题描述
我正在使用微服务架构构建一个系统,使用 RabbitMQ 作为消息传递服务。我有两个服务之间通信的用例,并且面临使用 RabbitMQ 实现它的困难。
Cart-Service 需要从 Product-Service 获取数据。在这种情况下,Cart-Service 可以发送一条消息,Product-Service 订阅该消息。但我发现 Product-Service 无法将数据发送回 Cart-Service。
您能否让我知道我在这种情况下使用 RabbitMQ 的方法是否正确?我应该在这个用例中应用任何其他方法吗?先感谢您。
解决方案
为您的 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
推荐阅读
- winapi - CF_DIBV5 的 Windows 剪贴板 ::GetClipboardData() 导致剪贴板上的图像被修改和损坏?
- swift - SpriteKit 节点穿墙
- java - java.lang.NoClassDefFoundError:解析失败:Landroid/graphics/BlendModeColorFilter;
- java - 如何为方法在接口内部声明并且该接口由两个不同的类实现的方法实现番石榴缓存
- rhel - systemctl 启动服务在 SPEC 文件中不起作用
- javascript - 随着范围滑块的移动计算并显示总数
- javascript - 有没有办法让文本隐藏在输入框中?
- google-app-engine - 如何在 App Engine 标准上部署 gRPC?
- php - 如何在 .htaccess 中使用一行代码隐藏 php 扩展
- c++ - c ++删除存储在向量中的链表的多个头/尾