Java 关闭卡夫卡消费者

Java 关闭卡夫卡消费者,java,spring,apache-kafka,Java,Spring,Apache Kafka,我在阅读卡夫卡高级消费者的详细信息时,看到了下面的陈述- 在实践中,一种更常见的模式是无限期地使用睡眠和睡眠 使用停机挂钩触发清洁停机 有没有这样做的例子或指针可以提供帮助?这将是一个无限循环的例子 public void run() { try { consumer.subscribe(topics); while (true) { ConsumerRecords<String, String> records = consume

我在阅读卡夫卡高级消费者的详细信息时,看到了下面的陈述-

在实践中,一种更常见的模式是无限期地使用睡眠和睡眠 使用停机挂钩触发清洁停机


有没有这样做的例子或指针可以提供帮助?

这将是一个无限循环的例子

public void run() {
    try {
      consumer.subscribe(topics);
      while (true) {
          ConsumerRecords<String, String> records = consumer.poll(Long.MAX_VALUE);
        //do something
      }
    } catch (WakeupException e) {
      // do nothing we are shutting down 
    } finally {
      consumer.close();
    }
  }

  public void shutdown() {
    consumer.wakeup();
  }
}

谢谢Nautilus,你能解释一下这个addShutdownHook的用法吗?它什么时候会被触发,又是如何触发的?赌客Vicky,读一下这篇文章,我想这比我在评论中给出的任何解释都要清楚得多。另一个创建关闭挂钩的选项是用@PreDestroy()注释shutdown()
@PostConstruct
    private void init(){
        addShutdownHook(); 
    }

 private void addShutdownHook(){
   Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

            @Override
            public void run() {
                shutdown();
            }
        }));
    }