可以向所有队列订户发送消息了吗?

时间:2020-09-14 07:57:13

标签: nestjs nats.io

我有两个微服务。第一个微服务是前端服务器,它要求第二个微服务实例之一进行某些工作。 NATS传输的最佳解决方案是排队。我可以发送消息,NATS只会将其发送到实例之一。但是那是否需要向每个队列实例发送消息或事件?

前台服务:


//module

  providers: [
    ...,

    {
      provide: 'CLIENT_PROXY_FACTORY',
      useFactory: (configService: ConfigService) => {
        return ClientProxyFactory.create(configService.get('microservice'));
      },
      inject: [ConfigService],
    }
  ],
// service

constructor(
    @Inject('CLIENT_PROXY_FACTORY')
    private nats: ClientProxy,
) {

}
// in some method
method() {

  this.nats.emit('test', 0);
  this.nats.send('test1', true).toPromise();

}

工人服务:

// bootstrap

  transport: Transport.NATS,
  options: {
    url: 'nats://127.0.0.1:4222',
    queue: 'worker'
  }
// controller

  @MessagePattern('test')
  messagefunc() {
    console.log('Got message!');
  }

  @EventPattern('test1')
  eventfunc() {
    console.log('Got event!');
  }

所以。在我的示例中,我需要创建Worker service的2个或更多实例。我需要一个解决方案,如何有时将事件或消息传递给所有Worker service实例?

1 个答案:

答案 0 :(得分:0)

让工作人员服务订阅两个主题:

  • 队列组中的主题A。发布到A的邮件将仅发送给一位工作人员。
  • 没有队列组的主题B。发布到B的邮件将发送给所有工作人员。

对不起,无法告诉您如何在NestJS中实现此功能。

相关问题