Kafka를 사용하려고합니다.
모든 구성이 올바르게 완료되었지만 콘솔에서 메시지를 생성하려고하면 다음 오류가 계속 발생합니다.
WARN Error while fetching metadata with correlation id 39 :
{4-3-16-topic1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
카프카 버전 : 2.11-0.9.0.0
답변
의 advertised.host.name
설정 과 관련이있을 수 있습니다 server.properties
.
무엇 일어날 수있는 당신의 프로듀서, 리더는 주어진 파티션 누구인지 찾기 위해 파악하려고하는 것입니다 advertised.host.name
와 advertised.port
연결하고 시도합니다. 이러한 설정이 올바르게 구성되지 않으면 리더를 사용할 수 없다고 생각할 수 있습니다.
답변
여기에 나열된 모든 권장 사항을 시도했습니다. 나를 위해 일한 것은 가서 server.properties
추가하는 것이 었습니다 .
port = 9092
advertised.host.name = localhost
남겨 listeners
및 advertised_listeners
주석.
답변
나를 위해 해결 한 것은 다음과 같이 청취자를 설정하는 것입니다.
advertised.listeners = PLAINTEXT://my.public.ip:9092
listeners = PLAINTEXT://0.0.0.0:9092
이로 인해 KAFKA 브로커는 모든 인터페이스를 청취합니다.
답변
도커 컨테이너로 kafka를 실행하고 비슷한 메시지가 로그에 넘쳐났습니다.
그리고 KAFKA_ADVERTISED_HOST_NAME
‘kafka’로 설정되었습니다.
필자의 경우 오류의 원인 /etc/hosts
은 ‘kafka’컨테이너 자체에서 ‘kafka’에 대한 누락 된 레코드였습니다.
예를 들어 ping kafka
‘kafka’컨테이너 내부 에서 실행 하면 실패합니다.ping: bad address 'kafka'
Docker와 관련 하여이 문제는 hostname
컨테이너 를 지정하여 해결됩니다 .
그것을 달성하기위한 옵션 :
답변
kafka_2.12-0.10.2.1을 사용하고 있습니다.
vi config/server.properties
아래 줄을 추가하십시오 :
listeners=PLAINTEXT://localhost:9092
- advertised.listeners는 std listener 속성에서 값을 가져 오기 때문에 변경할 필요가 없습니다.
브로커가 생산자와 소비자에게 광고 할 호스트 이름과 포트. 설정하지 않으면
- 구성된 경우 “리스너”값을 사용합니다.
그렇지 않으면에서 반환 된 값을 사용합니다 java.net.InetAddress.getCanonicalHostName()
.
Kafka 브로커를 중지하십시오.
bin/kafka-server-stop.sh
브로커 재시작 :
bin/kafka-server-start.sh -daemon config/server.properties
이제 아무 문제가 없어야합니다.
답변
Kafka와 함께 일하면서 지난 2 주 동안 같은 문제를 목격했으며 그 이후로이 Stackoverflow의 게시물을 읽었습니다.
2 주 동안의 분석 후에 나는 존재하지 않는 주제에 대한 메시지를 생성하려고 할 때 이것이 발생 한다고 추론했습니다 .
필자의 경우 결과는 Kafka가 오류 메시지를 다시 보내지 만 동시에 존재하지 않는 주제를 만듭니다. 따라서이 이벤트 이후에 해당 주제에 대한 메시지를 다시 생성하려고하면 작성된 주제로 더 이상 오류가 표시되지 않습니다.
참고 : 특정 Kafka 설치가 동일한 주제가 없을 때 주제를 자동으로 생성하도록 구성되었을 수 있습니다. 그것은 내 경우에 주제를 재설정 한 후 모든 주제에 대해 한 번만 문제를 볼 수있는 이유를 설명해야합니다. 구성이 다를 수 있으며이 경우 동일한 오류가 계속 발생합니다.
문안 인사,
루카 탐 펠리니
답변
아직 생성되지 않은 주제를 구독하려고 할 때이 메시지가 나타납니다. 우리는 일반적으로 배포 된 환경에서 선험적으로 생성 할 주제에 의존하지만, 매번 깨끗하게 시작되는 dockerized kafka 인스턴스에 대해 실행되는 구성 요소 테스트가 있습니다.
이 경우 테스트 설정에서 AdminUtils 를 사용 하여 주제가 존재하는지 확인하고 존재하지 않는 경우 작성합니다. AdminUtils 설정에 대한 자세한 내용은이 다른 스택 오버 플로우를 참조하십시오 .