rabbitmq 微服务消息传送

z8dt9xmd  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(190)

如果我有一个通用服务,如根据其他服务的事件发送电子邮件的电子邮件服务,以下哪种方法最好:
1.电子邮件服务监听多个队列/特定事件,并在触发这些事件时发送电子邮件。例如,电子邮件服务监听users_queue,并在发生user_created事件时发送欢迎电子邮件。
1.有一个通用的电子邮件队列,多个服务可以向该队列发出一个通用的send_email事件。如果除email服务外的其他服务想监听来自这个服务的事件怎么办?2我是否应该发出两个事件,一个到email队列,一个到这个服务的特定队列,并让那些其他服务实现第一种方法?

qzwqbdag

qzwqbdag1#

如果我没理解错的话,您是在问您是否应该采用基于编排或编排的方法:

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

备选方案#1详述了基于编排的方法,电子邮件服务对一组队列上的一组 * 事件 * 类型做出React,这里是队列users_queue上的一个事件类型user_created
备选方案#2详细介绍了一种基于编排的方法,电子邮件服务对一个队列上的一个 Command 类型做出React,这里是队列email_queue上的命令类型send_email
在选择方法时,请考虑以下事项:
电子邮件服务需要一组输入参数,如收件人地址、主题行、电子邮件模板和模板数据。
因此,如果您选择基于编排的方法,则Email服务所响应的 * 每个 * 事件都必须提供(要检索的信息)所需的参数-事实上,* 每个 * 事件都必须为响应该事件的 * 所有 * 服务提供(要检索的信息)所需的所有参数。
对于您的最后一个问题,如果您应该将相同的事件发出到多个队列:
考虑发出事件一次,并让事件中间件负责管理订阅和/或事件路由

相关问题