之前我们已经创建了一个微服务应用,现在,在其它的应用里面,就可以把消息发送给这个微服务去处理了,现在我们可以试一下基于请求与响应的微服务,后面我们再介绍基于事件的微服务。
微服务应用收到了从其它地方发送过来的消息,可以先判断一下消息的类型,然后再执行对应的方法来处理。在项目里面,打开 nest-1 这个应用里的 AppController。
在控制器里可以添加一下消息处理器。在文件顶部,需要从 @nestjs/microservices 这个包里面导入一些东西。
在这个控制器里添加一个方法,名字可以随便定义,比如 greet,表示问候。让这个方法可以处理消息,需要用一下 @MessagePattern 这个装饰器装饰一下它。这个 @MessagePattern 来自 @nestjs/microservices。
然后需要提供一个消息类型,或者叫消息模式,英文是 Pattern,这个消息类型可以是一个简单的字符串,也可以是一个对象。先把它设置成 greet,这样在其它地方,如果给这个微服务发送的消息里面,设置的消息类型是 greet,就会使用这个 AppController 控制器里的 greet 这个方法来处理。
发送的消息里面,除了消息的类型,还可以包含具体的数据,在这个消息处理器里面可以得到消息里的数据。给这个方法提供一个参数,这个参数用 @Payload 装饰器装饰一下,这个 @Payload 来自 @nestjs/microservices。
参数的名字可以叫 data,它的类型设置成 string。
然后在这个方法里面,让它 return 一个字符串,用一个字符模板,里面添加一个 hello,后面加上 data 参数的值。
现在我们就在这个微服务里定义好了一个消息处理器,它处理的是发送过来的 greet 这种消息。