如何使用 NestJS KafkaClient 订阅 Kafka 主题?

时间:2021-03-08 17:41:43

标签: nestjs kafkajs

我正在使用 NestJS adapters 实现 kafka 适配器。 在这个适配器中,我需要能够发布和订阅 Kafka 主题。适配器类不是控制器,所以我不能在那里添加 @EventPattern() 方法。 我可以注入 kafkaClient 并且只能发送消息:

export class KafkaAdapter extends IoAdapter {
  constructor(
    private readonly app: INestApplicationContext,
    private kafkaClient: ClientKafka,
  ) {
    super(app);
  }

  createIOServer(port: number, options?: any): any {
    const server: Server = super.createIOServer(port, options);
    const client = this.kafkaClient;
    server.adapter(function (nsp) {
      // using kafkaClient to send/emit messages 
    });
    return server;
  }
}

但似乎我无法使用此 kafkaClient 订阅 Kafka 主题。消费者已创建但未公开给公共 KafkaClient 接口。所以我被迫初始化另一个自定义消费者,它正在创建一个到 Kafka 的单独连接,我不喜欢它。

有什么方法可以在控制器之外订阅 Kafka 主题?

0 个答案:

没有答案