不同线程使用kafka生产者

u2nhd7ah  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(414)

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

lymnna71

lymnna711#

到目前为止,最好的方法(这是大多数有状态客户机连接器的典型情况,例如sql客户机、elasticsearch客户机等)是在应用程序启动时示例化一个示例,并在所有线程之间共享它。它只能在应用程序关闭时关闭。

gzszwxb4

gzszwxb42#

是的,kafkaproducer是线程安全的。
参见kafkaproducer类
将记录发布到kafka群集的kafka客户端。
生产者是线程安全的,通常应该在所有线程之间共享以获得最佳性能。
producer管理一个后台线程,该线程执行i/o以及到它需要与之通信的每个代理的tcp连接。使用后不关闭生产商会泄漏这些资源。

相关问题