设想
假设我有一个系统的三个主要组件:
UI - 收集来自用户的输入并创建通过消息总线发送的LoginUserCommand 。然后,用户界面侦听此消息总线以获取MessageReceivedEvent(s)。
用户服务- 接收LoginUserCommand并引发UserLoggedInEvent。这里的关键部分是消息服务需要被告知开始接收消息。
消息服务-为登录用户引发MessageReceivedEvent(s) 。
选项
我的设计问题是关于User Service和Message Service之间的交互。
当用户登录时,需要发生许多事情——服务需要协调,以便 UI 开始接收消息。
我是不是该...
- 用户服务是否引发了UserLoggedInEvent并让消息服务监听此事件并执行用户接收消息所需的工作?
...或者...
- 用户服务是否引发了一个UserLoggedInEvent但然后创建一个命令 - StartMessageReceivingCommand并将其显式发送到消息服务?
问题
每种方法的优点/缺点是什么?(级联事件与显式命令)。还有其他选择吗?