Apache kafka 通过不同线程使用Kafka生成器

Apache kafka 通过不同线程使用Kafka生成器,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,我有kafka producer为我的基于java的web应用程序将消息推送到kafka。根据文档,我可以看到kafka producer是线程安全的。这是否意味着我可以拥有Kafka producer的单个实例,并由不同的线程(web请求)使用它?在我的情况下,每个线程都将打开和关闭producer。这会产生任何问题吗?还是根据请求启动生产者更好 到目前为止,最好的方法(这是大多数有状态客户端连接器的典型方法,例如SQL客户端、elasticsearch客户端等)是在应用程序启动时实例化单个实

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

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

是的,KafkaProducer是线程安全的。

将记录发布到Kafka群集的Kafka客户端

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

生产者管理一个同样进行I/O的后台线程 作为到每个代理的TCP连接,它需要进行通信 具有如果使用后未关闭发生器,则会导致这些泄漏 资源


我担心它是否能处理以下情况。。一个线程打开生产者,在发送数据之前另一个线程关闭生产者。执行第一个线程发送时是否会出现异常?绝对会引发异常。通常我们使用像spring context这样的微容器,并且只有在销毁spring context时才关闭kafka consumer。如果只有一个
KafkaProducer
实例,那么我们在哪里以及如何在其上调用
close
方法?对于新的事务性API也是这样吗?文档没有指定,我看到的行为表明它是不安全的。@Ashikaumagaumagiliya是的,我认为事务API不是线程安全的。事实上,我发现它们的设计做得很差——它们假设某个消费者线程上下文,而使用事务句柄可以避免这种情况。您好,我是从java开始的,我想知道如何做这些事情,您有什么例子我可以看一下吗?谢谢