메시지를 보낼 때 갑자기 TimeoutExceptions을 던지기 시작한 KafkaProducer
이 있습니다. max.block.ms
속성을 60000ms로 설정하고 테스트 블록을 60s로 설정 했더라도 오류 메시지는 항상 200ms 미만으로 나타납니다. 실제로 디버그 모드에서 실행하고 waitOnMetadata
메서드를 수동으로 실행하면 60000ms 만 표시됩니다.아파치 카프카 프로듀서가 메시지를 보낼 때 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 config를 설정하고 클라이언트에 연결하는 것이 좋습니다. – amethystic
이전에 값을 설정하지 않은 상태에서 작동하는 다른 서버에서 값을 설정하지 않은 경우 왜 지금 설정하면 도움이됩니까? – annedroiid
kafka-console-producer로 실행 해 보셨습니까? –