繁体   English   中英

如何使用 spring-kafka 暂停和恢复 @KafkaListener

[英]how to pause and resume @KafkaListener using spring-kafka

我已经实现了 Kafka 消费者,现在我有了一个场景。

  1. 从 Kafka stream 2.2.5 读取数据。通过 Srpingboot 发布
  2. 加载数据库表1
  3. 将table1的数据复制到table2
  4. 清理桌子1

要执行上述操作,我需要使用石英的调度作业(已编写)暂停/恢复 Kafka 消费者,该作业将数据从表 1 复制到表 2。但在此活动期间,我希望我的 Kafka 侦听器暂停,并且复制完成后,它应该恢复。

我的实现:

@KafkaListener(topicPartitions =
    { @TopicPartition(topic = "data_pipe", partitions = { "0" })})
public void listen(ConsumerRecord<String, String> cr) throws Exception {

如果您使用“kafkaListener annotation”自动创建的 KafkaListenerEndpointRegistry bean,那么,您可以像以下代码一样使用它:

@Component
public class KafkaManager {

    private final KafkaListenerEndpointRegistry registry;

    public KafkaManager(KafkaListenerEndpointRegistry registry) {
        this.registry = registry;
    }
    public void pause() {
        registry.getListenerContainers().forEach(MessageListenerContainer::pause);
    }

    public void resume() {
        registry.getListenerContainers().forEach(MessageListenerContainer::resume);
    }
}

文档: https://docs.spring.io/spring-kafka/reference/html/#pause-resume

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM