在应用里发生的事情,可以发布一个事件。比如创建了用户以后,可以发布一个用户已创建的事件,事件对应的处理器可以处理这个事件。
在终端,先生成一个事件,执行 npm run ge 生成一个事件,事件的名字是 user-created,把它放在 user/create/events 目录里面。
回到项目,打开 user/create/events 下面的 user-created 事件,这个事件有个 params 参数,类型是 UserCreatedEventParams,在这个 interface 里面,添加一个 name 属性,类型是 string。这样在发布这个 UserCreated 事件的时候,要提供一个 params 参数,它里面要包含一个 name 属性。
处理 CreateUser 命令的时候,如果成功创建了用户,可以发布一个 UserCreated 事件,打开 create-user,在这个命令的 execute 方法里,用一下 this.eventBus.publish 发布一个事件,新建一个 UserCreatedEvent,提供一个 params,里面添加一个 name 属性。注意在这个命令处理器的 constructor 要注入需要用的这个 EventBus。
事件处理器
打开 user-created.event.handler ,它是 UserCreated 事件对应的处理器,在它的 handle 方法里面,可以处理一下发生的 UserCreated 事件。解构一下事件参数,把 name 从 event.params 里面解构出来。然后在控制台上输出一行文字,user 后面是 ${name} has been created 。
测试
在 Http 客户端测试一下,发送一下这个创建用户请求,回到运行项目开发服务的终端观察一下,你会发现这里输出了一个 user 王皓 has been created。
请求创建用户接口会执行创建用户命令,在这个命令的处理器那里会发布一个用户已创建的事件,这个事件的处理器做的事情就是在控制台上输出这样一行文字。