NestJS 微服务 - 在 ClientProxy 上使用 Facades 进行服务通信

时间:2021-05-21 10:29:09

标签: rabbitmq microservices nestjs facade

我开始学习NestJS + rabbitMQ,看看微服务之间的下一个通信方式in docs

在模块中注册:

@Module({
  imports: [
    ClientsModule.register([
      {
        name: 'MATH_SERVICE',
        transport: Transport.RMQ,
        options: {
          urls: ['amqp://localhost:5672'],
          queue: 'cats_queue',
          queueOptions: {
            durable: false
          },
        },
      },
    ]),
  ]
  ...
})

然后发送消息:

this.client.send<number>(pattern, payload);

我很好奇 - 有没有办法把它包装成 Facade 模式?

例如,我有下一个应用程序结构(3 个 NestJS 应用程序 - 每个服务 1 个):

  • 网关
  • 用户
  • 任务

我想做这样的事情:

// This is a route of gateway controller
@Get(':id')
getUserById(@Param('id') id: string): string {
  return this.usersFacade.getById(id);
}

在上面的代码中,usersFacade 自行决定它应该使用哪个队列以及取决于被调用方法的消息。 我想这是一个服务,要么在用户服务中描述,要么应该移动到一个单独的应用程序(类似于公共服务),该应用程序专用于这些服务和其他可重复使用的其他应用程序的东西。 但在这种情况下,我应该如何从外部 NestJS 应用导入服务?

很高兴能有关于它的想法,甚至是与 NestJs 无关的类似微服务案例。

0 个答案:

没有答案