Kafkaからすべてのメッセージを取得できます:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
最後のメッセージのみを取得する方法はありますか?
編集:
いくつかのメッセージを監視するだけの場合(--max-messages 10
)ストリームでは、便利なコマンドは次のとおりです。
watch -n5 "./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic auction --max-messages 10"
私は自動化を認識していませんが、この単純な2段階のアプローチを使用すれば、うまくいくはずです。私の場合、それはパーティション化されたトピックでしたが、パーティション化されていないトピックがある場合は、そのパラメータを省略することができます。
1)トピックの最大オフセットを取得(+パーティション):
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic mytopic
mytopic:2:11
mytopic:1:7
mytopic:0:15
mytopic:3:8
2)トピック(+パーティション)を選択し、パラメーターとしてoffset-nを指定します:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --offset 10 --partition 0
トピックの最後のn個のメッセージがコンソールに出力されます。私の例では、5つのメッセージ(= 15-10)が表示されます。
私はおそらくいくつかのグーグルから正しい答えを得ました http://grokbase.com/t/kafka/users/145x930s27/how-to-get-last-message
そこで、getOffsetBefore apiを使用して最後のオフセットを見つけ、そのオフセット-1を使用してフェッチすることを提案する人がいます。
私は次のコマンドラインで動作すると思います(つまり--from-beginningなし):
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test