首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RabbitMQ同时传播多个事件是正确的吗?

问使用RabbitMQ同时传播多个事件是正确的吗?
EN

Stack Overflow用户
提问于 2022-07-14 14:28:18
回答 1查看 78关注 0票数 0

我正在开发一个使用微服务架构的应用程序。假设有3种微服务。

  • 用户-Microservice(存储用户信息(用户名、密码等))
  • 邮寄-微型服务(负责发送邮件)
  • UserInfo-Microservice (存储用户信息(姓名、姓氏等))

UserInfo和邮件微型服务都在监听用户的微服务。

创建用户时

  • UserInfo微服务公司希望获得这些信息(姓名、姓氏等)。
  • 邮寄微型服务公司希望获得这些信息(电子邮件地址)。

问题

  • 我必须创建一个事件(UserCreatedEvent)并发送所有信息吗?(姓名、姓氏、电子邮件地址) 问题 UserInfo微服务不需要电子邮件地址信息。 邮寄微型服务不需要姓名、姓氏信息
  • 发布两种不同的信息是正确的用法吗? _publishEndPoint.publish(UserInfoData); _publishEndPoint.publish(MailData);
EN

回答 1

Stack Overflow用户

发布于 2022-07-15 00:47:28

在泛泛的笔画中,有两种协调多种服务、编排和编排的方法:

  • 服务编排是指一种命令式协调风格,这里的命令式协调是指具有显式控制和数据流的指令序列。
  • 服务编排是指一种声明式协调风格,这里的声明性协调是指一组具有隐式控制和数据流的指令。

服务编排

在服务编排中,有一个专用的编排器,例如Saga或Workflow。编排器按所需的顺序调用您的服务,例如用户服务、用户信息服务、邮件服务。

在这里,编排器直接依赖于3项服务,但是,服务没有任何依赖项。

​

​

服务编排

在服务编排中,没有专门的编排人员。服务发布事件并对事件做出反应--例如,用户服务发布UserCreatedEvent,用户信息和邮件服务对UserCreatedEvent做出反应。

在这里,用户服务、用户信息服务和邮件服务直接依赖于UserCreatedEvent

​

​

通常,发出同一事件的不同投影(例如UserInfoData和MailData )时,UserCreatedEvent的两个投影并不常见,也不会简化依赖关系。

​

​

结论

根据您的描述,您选择服务编排。编排的现实是一个复杂的事件/服务依赖关系,它表示控制和数据流--如果您想要更改控制流或数据流的机会很高,您必须相应地更改多个服务。

您可能也需要考虑服务编排,并实现saga模式或通过像temporal.io这样的工具实现工作流

(免责声明我在temporal.io工作)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72982180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档