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,因为它是线程安全的,建议使用单实例。
请说出哪一个是创建 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,因为它是线程安全的,建议使用单实例。