我们在apache kafka 0.10.0.x和spring 3.x上运行,不能使用spring kafka,因为它支持spring framework 4.x.提高Kafka Producer的性能
因此,我们使用原生的Kafka Producer API来生成消息。
现在我所关心的是我的制作人的表现。事情是,我相信producer.send
的调用是真正与Kafka代理进行连接,然后将消息放入缓冲区,然后尝试发送,然后可能调用您提供的producer.send()
中提供的回调方法。
现在KafkaProducer文档说它使用一个缓冲区和另一个I/O线程来执行发送,并且应该适当关闭它们以便不会泄漏资源。
据我所知,这意味着如果我每次调用producer.send()
时都会发送100个消息,它会尝试连接到代理,这是一种昂贵的I/O操作。
如果我错了或者建议更好地使用KafkaProducer,你能纠正我的理解吗?
好的 - 这有助于我调整属性并适当地使用它们。有没有推荐的方法用于春季?我的意思是我正在考虑将KafkaProducer创建为singleton bean,然后在需要的地方注入它,但是在这种情况下会出现资源泄漏或性能问题? –
那么reccomendeed使用KafkaProducer的方法是有一个实例并在线程之间共享。所以实际上你打算做的事情似乎没有问题。至少在几年前,当我还在使用Spring时,我会这样做。不知道在此期间,做这种事情的春天惯用方式已经改变了。顺便说一句,如果您认为答案是令人满意的,请接受它。 – nivox