2017-01-09 3 views
0

I 3ノードカフカクラスタを設定し、このようなプロデューサーとしてPythonを使用した:ブローカーの一部が利用できない場合、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? 

答えて

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 
関連する問題