通过不同的线程使用Kafka Producer

时间:2016-03-24 01:54:15

标签: apache-kafka kafka-producer-api

我有基于java的Web应用程序的kafka生产者将消息推送到Kafka。根据文档,我可以看到kafka生产者是线程安全的。这是否意味着我可以拥有Kafka生产者的单个实例,并通过不同的线程(Web请求)使用它们,每个都将在我的情况下打开和关闭生产者。这会产生任何问题吗?或者最好根据请求启动生产者?

2 个答案:

答案 0 :(得分:11)

是的,KafkaProducer是线程安全的 请参阅Class KafkaProducer

  

向Kafka集群发布记录的Kafka客户端。

     

生产者是线程安全的,通常应该在所有人之间共享   线程以获得最佳性能。

     

生产者管理一个执行I / O的后台线程   作为与每个需要进行通信的代理的TCP连接   用。未能在使用后关闭生产者将泄漏这些   资源。

答案 1 :(得分:0)

到目前为止,最好的方法(通常是大多数有状态客户端连接器,例如SQL客户端,弹性搜索客户端等)是在应用程序启动时实例化单个实例并在所有线程之间共享它。它应该只在应用程序关闭时关闭。