バージョン0.9の基本設定で 1ブローカー1トピックと1パーティションを設定しています。ブローカーがダウンしているときにカフカプロデューサーがリトリングしない
以下は、Producerからの再試行を有効にするために追加したプロデューサ構成です。
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ProducerConfig.RETRIES_CONFIG, 5);
props.put(ProducerConfig.RECONNECT_BACKOFF_MS_CONFIG, 500);
props.put(ProducerConfig.ACKS_CONFIG, "all");
props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 500);
props.put(ProducerConfig.METADATA_MAX_AGE_CONFIG, 50);
私は、ゼロより大きな値を設定する
は、クライアントがその送信潜在的に一時的なエラーで失敗する任意のレコードを再送信するようになりますことを文書から理解しています。この再試行は、クライアントがエラーを受け取ったときにレコードを再送信した場合と同じです。
私のブローカー&両方の動物園がダウンしており、再試行操作が機能していません。
ERROR o.s.k.s.LoggingProducerListener - トピックにメッセージを送信するときにスローされる例外TestTopic1 | org.apache.kafka.common.errors.TimeoutException:500ミリ秒後にメタデータの更新に失敗しました。
再試行のためにここに何か不足しているかどうかを知る必要があります。
私は再試行機能をテストしたかったので、故意にブローカーとZookeeperを停止しました。 このバグを指摘していただきありがとうございます。私は0.10にアップデートしてみましょう。 – user1564626
0.10にアップグレードしても問題は変わりません。どのようにあなたのために働いたのか教えていただけますか? その他の変更が必要かどうか教えていただけますか? – user1564626
プロデューサとサーバーの両方をアップグレードしましたか?また、再試行していないことをどのように知っていますか?また、あなたはいつブローカーを殺していますか?私は当初、プロデューサーが働くためにそこにいる必要があると思います。あなたはループでメッセージを生成することができます(スリープ状態で)。その後、ブローカを作成中にシャットダウンしますか?また、retry.backoff.msで再生します。おそらくかなり高い値に設定して、実際に再試行していると判断できるでしょうか? – bibac