Kafka Producer - 默认支持多线程?

时间:2015-02-16 11:28:02

标签: apache-kafka

我是kafka的新手。我使用kafka_2.9.2-0.8.1.1创建了示例kafka同步生成器和使用者组程序。 所以我的问题是,我是否需要向生产者添加多线程代码(如consumergroup类)以支持大量请求?我读生产者发送方法是线程安全的。 那么kafka生产者将在内部处理多线程概念,或者开发人员必须明确地编写代码?

任何帮助都将受到高度赞赏。

谢谢, Cdhar

1 个答案:

答案 0 :(得分:3)

Kafka有两种类型的生产者。 (1)SyncProducer(2)AsyncProducer。如果您将producer.type配置设为async,则会使用AsyncProducers。默认情况下,它使用Synchronous生成器类。

在异步模式下运行后,它会为每个代理创建一个单独的AsyncProducer实例。每个AsyncProducer实例都维护自己的内部后台线程以发送消息。这些被称为ProducerSendThread

因此,每个代理运行一个线程,并且您的并行性基于群集中可用的代理数量。因此,在群集中添加新的代理应该为您提供灵活性,以便在使用Kafka生成数据时提高并行度。但是,请记住在群集中添加新代理也应考虑考虑其他参数。