私は非同期モードでkafkaプロデューサーを使用していますが、すべてのブローカーがダウンすると同期のように動作し、metadata.fetch.timeout.msが期限切れになるまで待機します。これは私の場合は60秒です。私の最初の質問は、これは正常な動作ですか、それとも何か間違ったことをしているのですか?
私のロジックのトランザクションは最大 100 ミリ秒で終了する必要があるため、このタイムアウト値は私にとって非常に大きな遅延です。おそらく、metadata.fetch.timeout.ms を 10 ミリ秒に設定すると問題が解決する可能性がありますが、これがシステムにどのように影響するかはわかりません。これはどこかでボトルネックや CPU の大量消費を引き起こしますか?
別の可能な解決策は、作成を本当に非同期にするexecutorserviceでメッセージを作成することですが、物事をより複雑にしたくありません。誰もこれを前に試しましたか?
私の最後の質問は、スイッチメカニズムを使用して、すべてのブローカーがダウンしている場合は kafka へのプロデュースを無効にし、すべてのブローカーが稼働している場合は有効にすることです。カフカにハートビートの問題に対する機能はありますか?
ありがとう。