我有Kafka生产者为我的基于java的web应用程序,以推送消息到kafka。根据文档,我可以看到kafka producer是线程安全的。这是否意味着我可以拥有Kafka producer的单个实例,并由不同的线程( web请求)使用它,在我的情况下,每个线程都会打开和关闭producer。这会产生什么问题吗?或者更好的做法是按请求启动生产者?
发布于 2016-03-24 13:27:40
是的,KafkaProducer是线程安全的。
将记录发布到Kafka集群的Kafka客户端。
生产者是线程安全的,通常应该在所有线程之间共享,以获得最佳性能。
生产者管理单个后台线程,该线程执行I/O以及到它需要与之通信的每个代理的TCP连接。如果在使用后没有关闭生成器,则会泄漏这些资源。
发布于 2016-03-24 11:33:55
到目前为止,最好的方法(这是大多数有状态客户端连接器的典型,例如SQL客户端,elasticsearch客户端等)是在应用程序启动时实例化单个实例,并在所有线程之间共享它。它应该只在应用程序关闭时关闭。
https://stackoverflow.com/questions/36191933
复制相似问题