Обработчик сообщения в Nest
Канал уже слушает TCP, но входящие запросы никто не разбирает. Клиент шлёт шаблон, а в процессе нет класса, который сопоставит его с работой над массивом в памяти.
На стороне микросервиса описывают контроллер без HTTP маршрутов. Метод помечают шаблоном сообщения на латинице: Nest направляет тело запроса в этот метод, когда имя совпадает. Класс записывают в контроллерах корневого модуля слушателя, как обычную страницу, только транспорт не HTTP.
Покажем на примере постов:
import { Controller } from '@nestjs/common';
import { MessagePattern, Payload } from '@nestjs/microservices';
@Controller()
export class PostMicroserviceController {
posts: { title: string }[] = [];
@MessagePattern({ cmd: 'add_post' })
addPost(@Payload() data: { title: string }) {
const post = { title: data.title };
this.posts.push(post);
}
}
Подключим класс к модулю микросервиса:
import { Module } from '@nestjs/common';
import { PostMicroserviceController } from './post.microservice.controller.js';
@Module({
controllers: [PostMicroserviceController],
})
export class AppModule {}
Опишите WorkerMicroserviceController
с приёмом данных работника
и сохраняйте строку в массиве
поля класса, затем запишите его
в контроллерах корневого модуля
слушателя.