0

3 ノードの kafka クラスターをセットアップし、次のように python をプロデューサーとして使用しました。

kafka_addr = "n0.xxx.com:9092,n1.xxx.com:9092,n2.xxx.com:9092"
producer = KafkaProducer(bootstrap_servers=kafka_addr)

"n0" と "n1" が利用可能で "n2" が利用できない場合 (ブローカーの故障またはネットワーク エラー)、プロデューサーは "n0n1" に送信することで正常に動作できず、エラーをスローします。

getaddrinfo failed for n2.xxx.com:9092, exception was [Errno 8] nodename nor servname provided, or not known. Is your advertised.host.name correct and resolvable?
4

1 に答える 1

1

利用可能なブローカーを見つけて、それに送信しようとします:

kafka_addr = ["n0.xxx.com:9092","n1.xxx.com:9092",n2.xxx.com:9092"]
producer = None
for broker in kafka_addr:
    try:
        producer = KafkaProducer(bootstrap_servers=broker)
        break
    except:
        pass
if producer is not None:
    #do something
于 2017-01-10T05:23:37.387 に答える