我在这里问有关关闭kafka消费者的问题。即使使用线程退出,我是否也需要关闭kafka使用者?不会因任何更改而关闭它泄漏资源吗?

这是一个代码示例:

public class MyThread extends Thread{

    private KafkaConsumer<String, Message> kafkaConsumer;


    @Override
    public void run() {
        kafkaConsumer = initConsumer();
        while(true){
            kafkaconsumer.poll(1000000)
            //Code goes here.
        }
    }
}


使用kafkaConsumer退出MyThread时,System.exit是否关闭?

最佳答案

格温·夏皮拉(Gwen Shapira),内哈·纳赫德(Neha Narkhede),托德·帕利诺(Todd Palino)(O'Reilly Media)引述“卡夫卡-权威指南”:


  退出之前,请始终关闭使用者。这将关闭网络连接和套接字。它还将立即触发重新平衡,而不是等待组协调者发现消费者停止发送心跳并可能死了,这将花费更长的时间,因此会导致消费者无法使用来自服务器的消息的时间更长。分区的子集。


Kafka - The Definitive Guide

09-15 23:08