[英]How to pause Nest.js Kafka consumer
I am using Kafka.js in a Nest.js project.我在 Nest.js 项目中使用 Kafka.js。 This is how I initialise KafkaClient:
这就是我初始化 KafkaClient 的方式:
@Module({
...
providers: [{
provide: 'KAFKA_CLIENT',
useFactory: async (configService: KafkaClientConfigService) => {
const kafkaOptions = configService.getKafkaOptions();
return ClientProxyFactory.create(kafkaOptions);
},
inject: [KafkaClientConfigService],
},
]
...
})
Now I inject KafkaClient to my Controller, and I wish to consume messages with intervals.现在我将 KafkaClient 注入到我的控制器中,并且我希望使用间隔消息。 While there is a way to do it with Kafka.js using
consumer.pause()
I could not find any reference to such option in KafkaClient.虽然有一种方法可以使用
consumer.pause()
在 Kafka.js 中做到这一点,但我在 KafkaClient 中找不到对此类选项的任何引用。
Is there any option to do so either by pausing or by throttling the consumer?是否有任何选择可以通过暂停或限制消费者来做到这一点?
The ClientKafka
has a protected consumer
property. ClientKafka
具有protected consumer
财产。 On the consumer itself you can call pause()
and resume()
.在消费者本身上,您可以调用
pause()
和resume()
。
To use these methods I'm currently extending the ClientKafka
with a custom class and use it as provider instead.为了使用这些方法,我目前正在使用自定义类扩展
ClientKafka
,并将其用作提供者。
import { ClientKafka, KafkaOptions } from '@nestjs/microservices'
export class KafkaClient extends ClientKafka {
pause() {
this.consumer.pause()
// ...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.