当前位置: 首页 > 知识库问答 >
问题:

不同线程使用Kafka Producer

晋弘义
2023-03-14

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

共有2个答案

郑帅
2023-03-14

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

元胡媚
2023-03-14

是的,KafkaProducer是线程安全的。< br >请参考KafkaProducer类

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

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

生产者管理一个执行I/O的后台线程以及一个传输控制协议到它需要与之通信的每个代理。使用后未能关闭生产者将泄漏这些资源。

 类似资料:
  • 问题内容: 我正在跟踪一些并发问题,在登录到控制台时,使每个线程的输出行具有不同的颜色将非常有帮助。我在OS X上。是否可以使用转换模式输出一些控制代码来完成此操作,或者需要自定义附加程序?有人知道吗? exec-9和exec-10的行应使用不同的颜色。 问题答案: 您可以扩展和覆盖。您可以在那里查看基于线程名称的颜色(奇/偶,也许?)。 为了将颜色输出到控制台,您需要使用ANSI Escape

  • 我要创建一个程序,给定N个线程,这些线程可以在队列中插入或删除一个元素,但是线程访问队列是有条件的: null 我用同步块做的,就像这样: run void很简单,它只是在插入或删除元素时永远循环。 我的问题是,在不使用synchronized的情况下,我如何遵循那个条件? 没有同步块,怎么可能保证互斥呢? 编辑:我不能使用类似于同步的东西(就像锁一样)

  • 问题内容: 我正在尝试同步三个线程以打印012012012012…。但是它不能正常工作。每个线程都分配有一个编号,当它从主线程接收到信号时将打印该编号。以下程序有问题,我无法捕获。 问题答案: 您需要更多的协调。该notify调用不会立即唤醒线程并强制其继续执行。相反,您可以考虑notify将电子邮件发送给线程以使其可以继续进行。想象一下,如果您想让3个朋友按顺序给您打电话。您向朋友1发送了一封电

  • 我尝试使用ArrayList解决生产者和消费者问题(我知道ArrayList是nt threadsafe),我确保使用关键字放置列表,但仍然进入。这就是错误 启动生产者请提供作业详细信息:TestJob作业完成:TestJob Exception位于java.util.ArrayList$itr.checkforcoModification(未知源)位于test.thread.consumer.r

  • 本文向大家介绍C#使用Interlocked实现线程同步,包括了C#使用Interlocked实现线程同步的使用技巧和注意事项,需要的朋友参考一下 通过System.Threading命名空间的Interlocked类控制计数器,从而实现进程 的同步。Iterlocked类的部分方法如下表: 示例,同时开启两个线程,一个写入数据,一个读出数据 代码如下:(但是运行结果却不是我们想象的那样) 运行结

  • 我有多个线程,它们都从一个对象运行。我希望“主线程”单独运行,直到某一点,然后它等待,所有其他线程一起运行,然后主线程唤醒,等等。。。。。我无法同步线程。我要么得到一个非法的监视器状态异常,要么它卡在一个“等待”循环中,该循环应该接收一个永远不会到达的“通知”。 更具体地说,我有一个带有数组的对象。阵列中的每个单元都有一个线程,该线程检查相邻单元,然后使用该信息更改其单元。为了有序地进行更改,我希