NestJS-2个微服务之间的通信

NestJS-2个微服务之间的通信,nestjs,Nestjs,我使用TCP协议构建了一个Http应用程序和两个微服务 这是我的应用程序图 我试图通过@Messagepattern()从帐户服务向好友服务发送消息 为每个服务设置ClientProxy。但它不起作用 我读过官方文档@nestjs/microservices,但我不知道哪一个是合适的 是否有正确的方法将消息从一个微服务发送到另一个微服务?您需要设置消息代理,如RabbitMQ或Kafka,即对于RabbitMQ,输入下面的命令并创建RabbitMQ容器 docker run -it --rm

我使用TCP协议构建了一个Http应用程序和两个微服务

这是我的应用程序图

我试图通过
@Messagepattern()
从帐户服务向好友服务发送消息

为每个服务设置ClientProxy。但它不起作用

我读过官方文档
@nestjs/microservices
,但我不知道哪一个是合适的


是否有正确的方法将消息从一个微服务发送到另一个微服务?

您需要设置消息代理,如RabbitMQ或Kafka,即对于RabbitMQ,输入下面的命令并创建RabbitMQ容器

docker run -it --rm --name rabbitmq -p 0.0.0.0:5672:5672 -p 0.0.0.0:15672:15672 -d rabbitmq:3-management
然后将RabbitMQ选项传递给
main.ts
bootstrap函数:


async function bootstrap() {
  const rabbitmqPort = 5672
  const rabbitmqHost = 127.0.0.1
  const app = await NestFactory.create(AppModule);
  app.connectMicroservice<MicroserviceOptions>({
    transport: Transport.RMQ,
    options: {
      urls: [
        `amqp://${rabbitmqHost}:${rabbitmqPort}`,
      ],
      queue: 'myqueue',
      queueOptions: {
        durable: false,
      },
    },
  });


  app
    .startAllMicroservices(() => {
      logger.log('Microservice is listening!');
    })
    .listen(3000, () => {
      logger.log('Api Server is listening on 3000');
    });
}

bootstrap();
然后将
Friend
客户端注入服务构造函数,如下所示:

    @Inject('Friend')
    private friendClient: ClientProxy,
      const myVar = await this.friendClient.send('Some_pattern', {SOME DATA}).toPromise();
发送如下消息:

    @Inject('Friend')
    private friendClient: ClientProxy,
      const myVar = await this.friendClient.send('Some_pattern', {SOME DATA}).toPromise();
为您的两个微服务设置所有上述配置,它将正常工作

      const myVar = await this.friendClient.send('Some_pattern', {SOME DATA}).toPromise();