私たちはapache kafka 0.10.0.xとspring 3.xで動作しており、spring framework version 4.xでサポートされているようにspring kafkaを使用することはできません。Kafkaのパフォーマンスを向上させるプロデューサ
したがって、ネイティブのKafka Producer APIを使用してメッセージを生成しています。
私の懸念は、私のプロデューサーのパフォーマンスです。実際には、producer.send
への呼び出しが実際にKafkaブローカーとの接続を確立し、メッセージをバッファーに入れてから、送信しようとしてからproducer.send()
で指定されたコールバックメソッドを呼び出すと考えています。
KafkaProducerのドキュメントによれば、送信を実行するためにバッファと別のI/Oスレッドを使用し、リソースが漏れないように適切に閉じておく必要があります。
これは、私が呼び出すたびに100sのメッセージが送信されると、それは高価なI/O操作であるブローカに接続しようとしていることを意味します(producer.send()
)。
私が間違っている場合、またはKafkaProducerを使用する方が良いと提言することができますか?
Ok - これは、プロパティを微調整して適切に使用するのに役立ちます。これを春に使用する推奨の方法はありますか?私は、シングルトンのBeanとしてKafkaProducerを作成し、それを必要に応じて注入することを考えていましたが、この場合、リソースの漏れやパフォーマンスの影響がありますか? –
さて、KafkaProducerを使うための再考された方法は、単一のインスタンスを持ち、スレッド間で共有することです。実際にあなたがやろうとしていることは、大丈夫と思われます。少なくともそれは私がまだ春を使用していたときに何年前にそれをやるかということです。その間に、このようなことをする春の慣用的なやり方が変わったのかどうかは分かりません。ところで、答えが満足できると思うなら、それを受け入れてください。 – nivox