为什么在创建微服务时需要定义队列名称?

我想要一个混合的nestJS应用程序,HTTP + RabbitMQ。但是不知道是否应该为每个队列创建不同的微服务。

我遵循了nestJS的RabbitMQ指南(https://docs.nestjs.com/microservices/rabbitmq)和GitHub示例(https://github.com/nestjs/nest/tree/master/sample/03-microservices)。

main.ts

app.connectmicroservice({
    transport: Transport.RMQ,options: {
      urls: [`amqp://user:user@hostname:5672`],queue: "cats_queue",queueOptions: { durable: false },prefetchCount: 1,}
  });
...
await app.startAllmicroservicesAsync();

app.module.ts (模块导入)

ClientsModule.register([{
      name: "CATS_QUEUE",transport: Transport.RMQ,options: {
        urls: [`amqp://user:user@hostname:5672`],prefetchCount: 1
      }
    }])

app.controller.ts

constructor(
    @Inject("CATS_QUEUE") private readonly client: ClientProxy
  ) {
  }
  @Get("mq")
  mq(): Observable<number> {
    const pattern = { cmd: "sum" };
    const data = [1,2,3,4,5];
    return this.client.send<number>(pattern,data);
  }

  @MessagePattern({ cmd: "sum" })
  sum(data: number[]): number {
    console.log("MESSAGE RECEIVED : " + data.toString());
    return (data || []).reduce((a,b) => a + b);
  }

据我了解,我需要为ClientsModule.register()中的每个队列定义app.module.ts。但是,为什么在创建微服务时还需要定义RabbitMQ队列名称?我需要为每个队列创建不同的微服务吗?

zjzj5823 回答:为什么在创建微服务时需要定义队列名称?

我不是NestJS用户,但是当您使用队列在微服务之间发送消息时,每个逻辑服务都需要一个队列(而不是相反),这似乎合乎逻辑。

队列用于在独立组件之间异步发送(TO)和接收(Process)消息。

这有意义吗?

本文链接:https://www.f2er.com/3128516.html

大家都在问