如果我有一个通用服务,如根据其他服务的事件发送电子邮件的电子邮件服务,以下哪种方法最好:
1.电子邮件服务监听多个队列/特定事件,并在触发这些事件时发送电子邮件。例如,电子邮件服务监听users_queue
,并在发生user_created
事件时发送欢迎电子邮件。
1.有一个通用的电子邮件队列,多个服务可以向该队列发出一个通用的send_email
事件。如果除email服务外的其他服务想监听来自这个服务的事件怎么办?2我是否应该发出两个事件,一个到email队列,一个到这个服务的特定队列,并让那些其他服务实现第一种方法?
1条答案
按热度按时间qzwqbdag1#
如果我没理解错的话,您是在问您是否应该采用基于编排或编排的方法:
备选方案#1详述了基于编排的方法,电子邮件服务对一组队列上的一组 * 事件 * 类型做出React,这里是队列
users_queue
上的一个事件类型user_created
备选方案#2详细介绍了一种基于编排的方法,电子邮件服务对一个队列上的一个 Command 类型做出React,这里是队列
email_queue
上的命令类型send_email
在选择方法时,请考虑以下事项:
电子邮件服务需要一组输入参数,如收件人地址、主题行、电子邮件模板和模板数据。
因此,如果您选择基于编排的方法,则Email服务所响应的 * 每个 * 事件都必须提供(要检索的信息)所需的参数-事实上,* 每个 * 事件都必须为响应该事件的 * 所有 * 服务提供(要检索的信息)所需的所有参数。
对于您的最后一个问题,如果您应该将相同的事件发出到多个队列:
考虑发出事件一次,并让事件中间件负责管理订阅和/或事件路由