Apache kafka (합리적인 카프카가 아님) 0.10을 사용합니다. kafka로 AVRO 스키마를 설정하고 싶습니다. 다음과 같이 avro 스키마가 있습니다.중앙 집중식 Avro 스키마가있는 Apache Kafka
{
"namespace": "Rule",
"type": "record",
"name": "RuleMessage",
"fields": [
{
"name": "station",
"type": "string"
},
{
"name": "model",
"type": "string"
}
}
일렬 메시지처럼,
public byte[] serializeMessage(EventMessage eventMessage) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(out, null);
DatumWriter<EventMessage> writer = new SpecificDatumWriter<EventMessage>(EventMessage.getClassSchema());
writer.write(eventMessage, encoder);
encoder.flush();
out.close();
return out.toByteArray();
}
이 예상대로 작동된다.
그러나 메시지가 avro 스키마를 충족시키지 못하는 경우 항목에서 메시지를 거부 할 수 있도록 Avro 스키마를 항목 수준에서 설정하려고합니다.
어쨌든 Apache Kafka 0.10을 사용하여이 작업을 수행 할 수 있습니다.
감사