Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nestjs 是否要向所有队列订阅者发送消息?_Nestjs_Nats.io - Fatal编程技术网

Nestjs 是否要向所有队列订阅者发送消息?

Nestjs 是否要向所有队列订阅者发送消息?,nestjs,nats.io,Nestjs,Nats.io,我有两个微型服务。第一个微服务是前端服务器,它请求第二个微服务实例之一中的一些工作。NATS传输的最佳解决方案是排队。我可以发送消息,NATS将只发送给其中一个实例。但是,如果我需要向每个队列实例发送消息或事件 前台服务: //module providers: [ ..., { provide: 'CLIENT_PROXY_FACTORY', useFactory: (configService: ConfigService) => {

我有两个微型服务。第一个微服务是前端服务器,它请求第二个微服务实例之一中的一些工作。NATS传输的最佳解决方案是排队。我可以发送消息,NATS将只发送给其中一个实例。但是,如果我需要向每个队列实例发送消息或事件

前台服务:


//module

  providers: [
    ...,

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

// bootstrap

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

所以。在我的示例中,我需要创建两个或多个
工作者服务的实例。我需要一个解决方案,如何有时向所有
工作者服务
实例传递事件或消息?

使工作者服务订阅两个主题:

  • 队列组中的主题A。发布到的消息将仅发送给一个工作进程
  • 没有队列组的受试者B。发布到B的消息将发送给所有工作人员
很抱歉,无法说明如何在NestJS中实现此功能

// 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!');
  }