当前位置: 首页 > 知识库问答 >
问题:

何时使用 REST API,何时使用消息传递服务(例如 RabbitMQ)在微服务之间交换数据?

酆英达
2023-03-14

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

购物车服务需要从产品服务获取数据。在这种情况下,购物车服务可以发送消息,产品服务订阅该消息。但是我找不到产品服务将数据发回购物车服务的方法。

你能让我知道我在这种情况下使用RabbitMQ的方法是否正确吗?在这个用例中,我还应该应用其他方法吗?提前感谢。

共有1个答案

夏涵畅
2023-03-14

对rabbitMQ消息路由使用事件驱动的命名约定。格式可以是<代码>

购物车服务订阅<code>产品*消息,产品服务-到购物车。** 个。

工作流可能如下所示:

    < li>cart:发布“cart.item.added”消息。 < li >产品:接收“cart.item.added”消息,发布“product . product . read”one < li >购物车:接收带有产品信息的“product.product.read”消息。

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

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

 类似资料:
  • 我知道消息传递系统是无阻塞和可扩展的,应该在微服务环境中使用。 我质疑的用例是: 假设有一个admin dashboard客户机负责发送API请求以创建Item对象。有一个微服务提供APIendpoint,它使用一个MySQL数据库来存储项目。还有一个微服务使用弹性搜索进行文本搜索。 如果此管理仪表板客户端: a.发送2个API调用;1次调用MySQL服务和另一个elasticsearch服务 或

  • 我对尝试将微服务/SOA作为一种体系结构非常感兴趣,并且很难对服务之间的集成进行概念化。 我喜欢使用消息传递将客户端与服务分离的想法,但不理解系统如何独占地使用它。典型的异步操作和发布/订阅显然是有意义的——比如创建新订单、广播数据以进行报告等。我不明白的是,人们是否通常尝试在常见的请求/回复场景中使用消息传递——例如,用户点击他们的“个人资料”页面,而需要在页面上呈现的部分数据来自用户服务。 我

  • 问题内容: 一个非常菜鸟般的问题: 我正在尝试使用工厂方法构建资源对象: 这种方法很容易,因为所有参数都是预定义的,organEntity和organCommpassword是在tag中定义的。 现在,对于另一个资源对象,我需要在调用工厂时传递参数。 我想象该资源对象的调用代码应如下所示: 我知道query()方法可以添加参数: 我想知道是否只是传递参数,可以在工厂获得参数吗?如何在工厂方法中指定

  • 我听说亚马逊使用HTTP作为其基于微服务的架构。另一种方法是使用RabbitMQ或Solace Systems这样的消息传递系统。我个人对基于Solace的微服务架构有经验,但从未使用过REST。 知道像Amazon、Netflix、UK Gov等各种大联盟实现使用什么吗? 其他方面是,在微服务中,还需要以下东西(除了其他东西): *模式匹配 *异步消息传递。接收系统可能已关闭 *发布订阅 *缓存

  • 我正在计划开发一个基于微服务的架构应用程序,当我阅读Ronnie Mitra的书《微服务架构》时,我决定使用Kafka进行内部通信;马特·麦克拉蒂;迈克·阿蒙森;伊拉克利·纳达雷什维利说: 让微服务直接与消息代理(如RabbitMQ等)交互很少是个好主意。如果两个微服务通过消息队列通道直接通信,那么它们共享一个数据空间(通道),我们已经详细讨论了两个微服务共享一个数据空间的弊病。相反,我们可以做的

  • 为了这个问题,我正在做一个项目,其中有两个微服务: null 根据我所读到的,为了进行这种更改,我们需要做以下几点: 从->切换 更改配置以启用分布式命令 使用SpringCloud或JCloud连接微服务 将AxonFramework添加到遗留InvoiceService项目并处理接收到的saga事件。 这是我们遇到麻烦的第四点:发票服务是由一个不愿意进行更改的单独团队维护的。 在这种情况下,使