Kafka消费者客户端创建单例实例与静态方法

Kafka consumer client creation singleton instance vs static method

请说出哪一个是创建 Kafka 消费者客户端的最佳实践。

public class KafkaConsumerFactory {

public static createKafKafkaConsumer(){
       KafkaConsumer consumer = new KafkaConsumer<   (getKafkaConsumerProperties());
      consumer.subscribe(Collections.Singleton.(getTopic()));
      return consumer;
}

public class KafkaConsumerFactory {

private static KafkaConsumer consumer;  

@Synchronized
public static KafkaConsumer createKafKafkaConsumer(){

if(consumer = null)
    {
      consumer = new KafkaConsumer< (getKafkaConsumerProperties());
      consumer.subscribe(Collections.Singleton.(getTopic()));
    }

 return consumer;
}
}

在生产环境中使用单例 Kafka 消费者客户端会有什么显着的好处吗?

Kafka Consumer 不是线程安全的,所以它不应该是 Singleton。 但是如果是 Producer,因为它是线程安全的,建议使用单实例。