【发布时间】:2012-08-07 13:42:06
【问题描述】:
场景
假设我有一个系统的三个主要组件:
UI - 收集用户的输入并创建通过消息总线发送的 LoginUserCommand。然后,用户界面会为 MessageReceivedEvent(s) 侦听此消息总线。
用户服务 - 接收 LoginUserCommand 并引发 UserLoggedInEvent。这里的关键部分是消息服务需要被告知开始接收消息。
消息服务 - 为登录的用户引发 MessageReceivedEvent(s)。
选项
我的设计问题是关于 User Service 和 Message Service 之间的交互。
当用户登录时,需要发生许多事情 - 服务需要协调,以便 UI 开始接收消息。
我应该……
- 让 User Service 引发 UserLoggedInEvent 并让 Message Service 监听此事件并执行用户接收所需的工作消息?
...或...
- 让 User Service 引发 UserLoggedInEvent 但然后创建一个命令 - StartMessageReceivingCommand 并将其显式发送到 Message Service?
问题
每种方法的优缺点是什么? (级联事件与显式命令)。还有其他选择吗?
【问题讨论】:
标签: nservicebus cqrs event-sourcing event-driven-design eda