2016-08-30 4 views
0

kafka 0.10 콘솔 제작자가 kafka 0.9에 메시지를 보낼 수없는 이유는 무엇입니까?kafka 0.10 콘솔 제작자가 kafka 0.9에 메시지를 보낼 수없는 이유는 무엇입니까?

저는 (서버 측에서) 버전 0.9에서 kafka 콘솔 소비자를 시작할 것입니다. (클라이언트 측에서) 버전 0.10에서 kafka 콘솔 제작자를 시작하려고합니다. 그렇다면 생산자 예외가 발생했습니다 (아래).

어떻게 새로운 생산자가 구 소비자에게 메시지를 보낼 수 없습니까? 일종의 deprecated 모드로 새 제작자를 설정하여 이전 kafka에 메시지를 보낼 수 있습니까?

$ 빈 \ 윈도우 \ 카프카 - 콘솔 producer.bat --broker리스트 my_server가 : 9092 --topic my_topic

[2016년 8월 30일 14 : 03 : 53,365] 카프카 생산에 오류 catch되지 않은 오류 I/O 스레드 : (org.apache.kafka.clients.producer.internals.Sender) org.apache.kafka.common.protocol.types.SchemaException : 'broker'필드를 읽는 동안 오류가 발생했습니다 : 'host'필드를 읽는 동안 오류가 발생했습니다 : 오류 길이가 25452 인 문자열 읽기, 사용 가능한 69 바이트는 입니다. org.apache.kafka.common.protocol.types.Schema.read (Schema.java:73) at org.apache.kafka.clients.NetworkClient.parseResponse (NetworkClient. java : 380) at org.apache.kafka.clients.NetworkClient.handleCompletedReceives (NetworkClien t.java:449) at org.apache.kafka.clients.NetworkClient.poll (NetworkClient.java:269) at org.apache.kafka.clients.producer.internals.Sender.run (Sender.java:229) java.lang.Thread.run에서 org.apache.kafka.clients.producer.internals.Sender.run (Sender.java:134) (Thread.java:745)에서 가

+0

규칙은'우선 중개인을 업그레이드 한 다음 클라이언트입니다. 그 반대도 아니야' – serejja

+0

고마워,하지만 아무런 의미가 없다. 왜 새 카프카 0.10.0.0 생산자는 구 카프카 소비자 0.9.0.0과 말할 수 없다. –

답변

2

카프카 0.10.0가 도입 새로운 메시지 형식. 완전히 확신 할 수는 없지만 새 형식의 메시지를 분명하게 알지 못하는 중개인에게 보내는 것처럼 보입니다.

0.10 생성자가 이전 메시지 형식을 사용하도록해야합니다. 여기에 더 많은 정보를 찾을 수 있습니다 : http://kafka.apache.org/documentation.html#upgrade_10_breaking

+0

해답을 보내 주셔서 감사합니다. 그러나 모든 것이 그렇게 간단하지 않습니다. 내 "반대"카프카가 0.9.0.0이므로 interbroker.protocol.version = 0.9.0.0을 추가했습니다. 예외가 발생했습니다. [2016-08-31 08 : 08 : 27,809] FATAL (kafka.Kafka $) java.lang.IllegalArgumentException : 요구 사항 없음 : log.message.format.version inter.broker.protocol.version이 0.9.0.0으로 설정된 경우 0.10.0-IV1을 사용할 수 없음 반면에 JAVA 프로듀서 API 프로토콜을 직접 제어하는 ​​메소드가 보이지 않으므로 Java API 0.10.0.0에서 Kafka 0.9.0.0으로 메시지를 보낼 수 있습니다. –

관련 문제