各種TimeoutException問(wèn)題
會(huì)拋出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如果沒(méi)有設(shè)置,默認(rèn)取java.net.InetAddress.getCanonicalHostName().值,被用于生產(chǎn)端和消費(fèi)端。因此外部網(wǎng)絡(luò)或者未配置hostname映射的機(jī)器訪問(wèn)kafka集群時(shí)就會(huì)有網(wǎng)絡(luò)問(wèn)題了。
原因是kafka客戶(hù)端連接到broker是成功的,但連接到集群后更新回來(lái)的集群meta信息是錯(cuò)誤的即是會(huì)返回的是節(jié)點(diǎn)的hostname,解決辦法就是手動(dòng)配置advertised.host.name和advertised.port,2個(gè)參數(shù)都必須配置,重啟問(wèn)題解決:
advertised.host.name=10.0.0.100
advertised.port=9092