2016-07-31 7 views
0

私はC++ kafka実装を C++ rdkafkaから使用しています。 質問はRdKafka :: KafkaConsumerについてです。トピックの最初から開始するように消費者を設定するにはどうすればよいですか?C++ kafkaクライアント(rdkafka)

P.S. リンクでの消費者の例はRdKafkaに基づいています::によってマークされている消費者「のみレガシー、代わりにKafkaConsumerを使用する」「auto.offset.reset」はどのように動作するかではありません

おかげ先

+1

"conf-> set(" auto.offset.reset "、" smallest "、errstr)"または "conf-> set(" auto.offset.reset "、" earliest "、errstr)"を試しましたか?新しいカフカ版の場合) –

+0

はい。しかし、それは役に立たなかった。私が消費者を再起動すると、最初からすべてのメッセージを読むことを期待しています(消費者アプリケーションがクラッシュする前に私がコミットしたメッセージを含む) –

+0

問題を解決しましたか?もしそうなら、どのように? –

答えて

1

を。 "auto.offset.reset"は有効なコミットされたオフセットがない場合にのみ有効です。流れが似ている:、見つから見つからない場合はオフセット

  • からのレジューム場合(再起動またはクラッシュ後)オフセット
    • ため
      1. 開始消費者、auto.offsetに応じてオフセットを設定。リセット。あなたは再起動のたびに全体のトピックを読みたい場合は
  • は、実際には全くオフセットをコミットする理由はありません。オフセットをコミットする目的は、再起動後にこのオフセットから再開したいので、あなたがどこにいたかを知ることです。

    +0

    OK、ありがとう。クライアントの遅延結合を実装するベストプラクティスは何ですか? (例えば、私は構成メッセージを生成し、それから多くの消費者が自分の時間とスケジューリングでそれを読むべきです)コミットを行わないと仮定すると、実際にはgroup.id = GUIDを持つ各コンシューマを作成すると同じ動作になりますそれはしませんでした。 –

    +0

    私は正確に理解できません。あなたは何をしたいのですか?新しい質問があるように思えます。あなたはきれいに保つために、新しい質問を始めたいと思うかもしれません。 –

    +0

    @ MatthiasJ.Saxまた、この現象が発生しています。私はauto.offset.reset = falseを使用しています。消費者がいなくても、新しいランダム生成group.idはまだ役に立ちませんでした。消費者は常に最新のメッセージを読む。 – user1116377

    関連する問題