カフカ0.8.2.1を単一のドッカーコンテナで実行しています。これは、ドッカーの作成と一緒に動作するように設定されたいくつかのコンテナの1つです。ドッカーの作成は、kafka 9092ポートをホストマシンに公開します。カフカオーバーライドadvertised.host.nameクライアントのクライアント
カフカサーバーのadvertised.host.name
は、kafka
に設定されています。他のすべてのコンテナは、この名前を使用して問題なく通信できます。
問題は、Javaテストプログラムがホストマシンからカフカサーバーにメッセージを送信できないことです。私はそれが正常に動作し、ホストマシン上の/etc/hosts
ファイルにエントリを追加した場合、その後の年齢のためのorg.apache.kafka.clients.producer.KafkaProducer
ハングどちらの場合も、エラー
を使用してkafka.javaapi.producer.Producer
エラー
- 。しかし、これは理想的ではありません、私は誰もが
hosts
ファイルを乱さずにこれらのテストを実行できるようにしたいと思います。メタ情報で指定されたホスト名/ ipを上書きする方法がJava Kafkaプロデューサにあります。カフカのインスタンスは1つしかないので、「正しいもの」を取得することに問題はありません。
結合ホスト/ポートは、クライアント接続のための ホスト/ポートと異なる場合は、あなたがadvertised.host.nameを設定することができます別のまれなケースで:それはこれを行うことができます意味FAQ pageで
そして、 クライアント接続
ためadvertised.portしかし、誰詳細どのように...
以上の一般的な解決策という失敗はありません。 java実行時環境に
hosts
エントリを設定する方法はありますか?システム/etc/hosts
ファイルを乱すことなく?おかげ
問題が解決したら、これを試してみます。私たちも使用しているcouchbaseが同じ問題を抱えていることがわかります。私は実際にあなたがプログラムでJava内からDNSをオーバーライドすることができるソリューションを見つけたので、問題を回避するためにそれを使用しました。 – Sodved