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();
}
}));
}