在酒店的微服务架构中,我想创建一个能处理所有电子邮件,短信的通信服务......这项服务应该由异步事件触发。
是否应调用这些事件:SEND_RESERVATION_CONFIRMATION_EMAIL,使预订服务了解电子邮件通信。或者是否应该有更通用的事件RESERVATION_CONFIRMED,从而产生确认电子邮件?
答案 0 :(得分:2)
是否应调用这些事件:SEND_RESERVATION_CONFIRMATION_EMAIL
没有。事件应该在过去被命名为句子。
使预订服务了解电子邮件通信
我不会做那种耦合。预订服务负责预订,而不是通知客户的方法。
或者是否应该有更通用的事件RESERVATION_CONFIRMED,从而产生确认电子邮件?
是的,RESERVATION_CONFIRMED
似乎是一个不错的选择;它代表真正发生的事情,并不包含接下来应该做什么的指示。通知客户的工作流程/过程应该由另一个组件管理,即Saga / Process manager。这个Saga将收到RESERVATION_CONFIRMED
事件,然后将SEND_RESERVATION_CONFIRMATION_EMAIL
命令发送给负责任的微服务。