我有一個KafkaProducer
,當我嘗試發送消息時突然開始拋出TimeoutExceptions。即使我已將max.block.ms
屬性設置爲60000ms,並將測試塊設置爲60s,但我總是收到的錯誤消息的時間少於200毫秒。它實際上顯示60000ms的唯一時間是如果我在調試模式下運行它並手動步驟通過waitOnMetadata
方法。Apache KafkaProducer在發送消息時拋出TimeoutException
錯誤例如:
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 101 ms.
有誰知道爲什麼會突然無法更新元數據?我知道這不是我的生產者實施錯誤,因爲它不但沒有改變它,因爲它工作,如果我在他們通過的另一臺服務器上運行我的測試。服務器端的原因是什麼?我應該重新啓動我的經紀人嗎?如果我讓它運行,爲什麼超時消息會顯示不正確的時間?
監製設置:
val props = new Properties()
props.put("bootstrap.servers", getBootstrapServersFor(datacenter.mesosLocal))
props.put("batch.size","0")
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")
props.put("max.block.ms","60000")
new KafkaProducer[String,String](props)
機器是否在IaaS環境中託管代理?如果是這樣,你最好設置advertised.host.name配置並讓客戶端連接到它們。 – amethystic
如果我之前沒有設置它的值,並且我沒有在其他服務器上設置它的值,爲什麼現在設置它會有幫助? – annedroiid
您是否嘗試過使用kafka-console-producer運行? –