用户登录

之前我们试了基于请求响应的微服务,就是客户端发送给微服务一个数据,期望得到从微服务那里得到一个响应。如果客户端不在乎响应,只想把某些事情告诉给微服务,可以触发一个事件。下面我们再试一下基于事件的微服务。

在 nest-1 这个应用的 AppController 里面,再添加一个方法,名字是 log ,让这个方法处理发送过来的事件,需要用一下 @EventPattern 这个装饰器装饰一下这个方法。设置一下监听的事件,比如 log。这样如果发送到这个微服务的事件的类型是 log,就会用下面这个 log 方法来处理。

方法可以获取到事件里带的数据,用 @Payload 装饰器装饰一个参数,参数的名字是 data,类型是 string 。然后在这个方法里面,用一下 console.log ,在控制台上输出一个 Log event,后面加上 data 参数的值。

触发事件

在其它的服务可以使用微服务的客户端发送一个事件,比如打开这个 ninghao-nest 里的 AppController,在这个控制器里我们已经注入了这个可以发送消息或者事件的客户端。

这个客户端是在 AppModule 这个模块里配置好的,因为 AppController 属于这个 AppModule 模块,所以我们就可以在它里面注入这个微服务客户端。

在这个控制器的 getHello 方法里,可以再用一下这个客户端,this.client,发送信息用的是 send,触发事件可以用一下 emit 这个方法。

设置一下事件的名字,比如 log,第二个参数是这个事件带的数据。 this is a test.

测试

在 Http 客户端,请求一下 localhost:3000,这样会 ninghao-nest 这个应用的 AppController 里的 getHello 方法,在这个方法里触发了一个 log 事件。

nest-1 微服务收到事件,会用它的 AppController 里的 log 方法来处理,这个方法做的事情就是在控制台输出 Log event,后面是事件里带的数据。

基于事件的微服务(@EventPattern, emit)《 企业应用架构:微服务 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点