各種TimeoutException問題
會拋出org.apache.kafka.common.errors.TimeoutException:
message可能為各種:
- Batch Expired
- Failed to update metadata after 60000 ms.
- ailed to update metadata after
- ...
原因
原因是發(fā)布到zookeeper的advertised.host.name如果沒有設置汉操,默認取java.net.InetAddress.getCanonicalHostName().
值澈驼,被用于生產(chǎn)端和消費端建邓。因此外部網(wǎng)絡或者未配置hostname映射的機器訪問kafka集群時就會有網(wǎng)絡問題了扇住。
原因是kafka客戶端連接到broker是成功的春缕,但連接到集群后更新回來的集群meta信息是錯誤的即是會返回的是節(jié)點的hostname,解決辦法就是手動配置advertised.host.name和advertised.port艘蹋,2個參數(shù)都必須配置锄贼,重啟問題解決:
advertised.host.name=10.0.0.100
advertised.port=9092