【发布时间】:2017-09-14 14:21:08
【问题描述】:
在酒店的微服务架构中,我想创建一个通信服务来处理所有的电子邮件、短信……这个服务应该由异步事件触发。
是否应调用这些事件:SEND_RESERVATION_CONFIRMATION_EMAIL,使预订服务知道电子邮件通信。还是应该有一个更通用的事件RESERVATION_CONFIRMED,从而产生一封确认电子邮件?
【问题讨论】:
标签: microservices
在酒店的微服务架构中,我想创建一个通信服务来处理所有的电子邮件、短信……这个服务应该由异步事件触发。
是否应调用这些事件:SEND_RESERVATION_CONFIRMATION_EMAIL,使预订服务知道电子邮件通信。还是应该有一个更通用的事件RESERVATION_CONFIRMED,从而产生一封确认电子邮件?
【问题讨论】:
标签: microservices
应将这些事件称为:SEND_RESERVATION_CONFIRMATION_EMAIL
没有。事件应命名为过去的句子。
让预订服务了解电子邮件通信
我不会做那种耦合。预订服务负责预订,而不是通知客户的方法。
或者应该有一个更通用的事件RESERVATION_CONFIRMED,从而产生一封确认电子邮件?
是的,RESERVATION_CONFIRMED 似乎是个不错的选择;它代表真正发生的事情,并且不包含下一步应该做什么的指示。通知客户的工作流/流程应该由另一个组件管理,即 Saga/流程经理。这个 Saga 会收到 RESERVATION_CONFIRMED 事件,然后会发送 SEND_RESERVATION_CONFIRMATION_EMAIL command 到负责的微服务。
【讨论】: