2017-02-08 3 views
1

バージョン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ミリ秒後にメタデータの更新に失敗しました。

再試行のためにここに何か不足しているかどうかを知る必要があります。

答えて

2

再送(再試行)は、ブローカへの接続があり、メッセージの送信中に何かが発生した場合にのみ機能します。

あなたのブローカーが死んでいる場合、メッセージを送信する理由は全くありません - 接続しません。それは例外です。

0

ブローカがダウンしていても、再試行はとにかく動作するはずです。これが最初の再試行を持つ理由のすべてです。結局のところ、一時的なネットワークの問題かもしれません。

Kafka 0.9.0.1プロデューサには再試行が行われないバグがあります。 See here

0.9.0.2(まだリリースされていません)と0.10で修正されました。ブローカーを0.10にアップグレードして再試行します。

+0

私は再試行機能をテストしたかったので、故意にブローカーとZookeeperを停止しました。 このバグを指摘していただきありがとうございます。私は0.10にアップデートしてみましょう。 – user1564626

+0

0.10にアップグレードしても問題は変わりません。どのようにあなたのために働いたのか教えていただけますか? その他の変更が必要かどうか教えていただけますか? – user1564626

+0

プロデューサとサーバーの両方をアップグレードしましたか?また、再試行していないことをどのように知っていますか?また、あなたはいつブローカーを殺していますか?私は当初、プロデューサーが働くためにそこにいる必要があると思います。あなたはループでメッセージを生成することができます(スリープ状態で)。その後、ブローカを作成中にシャットダウンしますか?また、retry.backoff.msで再生します。おそらくかなり高い値に設定して、実際に再試行していると判断できるでしょうか? – bibac

関連する問題