微服务消息



如果我有一个通用的服务,比如电子邮件服务,它根据来自其他服务的事件发送电子邮件,下面哪一种方法是最好的:

  1. Email service监听多个队列/特定事件,并在这些事件触发后发送邮件。例如,电子邮件服务监听users_queue,并在user_created事件时发送欢迎邮件。

  2. 配置通用的邮件队列,多个业务可以向该队列发送通用的send_email事件。关于此方法的另一个注意事项:如果除了电子邮件服务之外的其他服务想要从该服务中侦听事件,该怎么办?我是否应该发出两个事件,一个发送到电子邮件队列,另一个发送到特定于此服务的队列,并让其他服务实现第一种方法?

如果我正确理解了您的问题,您是在问您是否应该采用基于编排或编排的方法:

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

备选方案#1详细介绍了基于编排的方法,电子邮件服务对一组队列上的一组事件类型作出反应,这里是队列users_queue上的一个事件类型user_created

备选方案#2详细介绍了基于编排的方法,电子邮件服务对一个队列上的一个命令类型做出反应,这里是队列email_queue上的命令类型send_email

在选择方法时,请考虑以下几点:

电子邮件服务需要一组输入参数,如收件人地址、主题行、电子邮件模板和模板数据。

因此,如果您选择基于编排的方法,Email服务响应的每个事件必须提供(检索信息)所需的参数——事实上,每个事件必须为响应该事件的所有服务提供所有(检索信息)所需的参数。

对于你的最后一个问题,如果你应该向多个队列发出相同的事件:

考虑发射事件一旦和管理订阅的事件中间件照顾和/或事件路由

相关内容

  • 没有找到相关文章

最新更新