我有几个并行运行的任务(
ExecutorService
和Runnable
任务)。对所有这些都使用一个 KafkaProducer
实例(Spring 单例 bean)是一个不错的选择吗?那么,如果两个任务同时调用send()
方法,发送队列将如何构建呢?现在我正在为每个可运行对象创建一个生产者。我正在寻找优化方法。
KafkaProducer
被设计为线程安全的,因此在多个线程中同时调用其 send
方法应该是没问题的。
据我所知,Kafka通过在内部缓冲每个分区发送的记录并将记录批处理在一起来优化并发性。这是一篇关于 Kafka Producer 设计的精彩文章。
以上所有内容以及更多内容都是可配置的。