2016-08-03 17 views
2

Ich habe versucht, Beispielcode für Spring Boot Kafka Camel Avro Verbraucher ohne Glück zu finden.Spring Boot Kafka Camel Avro Verbraucher

https://thysmichels.com/2015/09/04/apache-camel-kafka-spring-integration/

Aber was fehlt, ist der Avro Teil: Ich habe Frühling Camel Kafka Konsumenten- und Produzenten Probe unter der folgenden URL gefunden. Ich bin auf der Suche Camel Dokumentation avro hier:

http://camel.apache.org/avro.html

Meine konkrete Frage ist einmal meine Bohne aus dem Avro Schema erstellt wird, und ich habe die POJO Klassen, wie ich oben Benutzer Kamel für das Frühjahr Beispiel sagen Avro-Serialisierung? Insbesondere beziehen ich mir diese Codezeile: aus ("kafka: localhost: 9092 Thema = test & zookeeperHost = localhost & zookeeperPort = 2181 & groupId = Gruppe1 & serializerClass = kafka.serializer.StringEncoder"). Bohne (kafkaOutputBean.class);

Wo der Serialisierer StringEncoder ist. Wie kann ich Camel mitteilen, die Avro-Serialisierung zu verwenden?

+0

Würde nicht 'serializerClass = ...' wo Sie es setzen? z.B. '& serializerClass = avro.serializer.StringEncoder' – jny

Antwort

0

Ich fand meine eigene Antwort. Daher möchte ich es mit dir teilen. Es ist eigentlich serializerClass=org.springframework.integration.kafka.serializer.avro.AvroSerializer. Der Code ist sehr einfach und Sie können Ihre eigenen schreiben.

public class AvroSerializer<T> { 

     public T deserialize(final byte[] bytes, final DatumReader<T> reader) throws IOException { 
      final Decoder decoder = DecoderFactory.get().binaryDecoder(bytes, null); 
      return reader.read(null, decoder); 
     } 

     public byte[] serialize(final T input, final DatumWriter<T> writer) throws IOException { 
      final ByteArrayOutputStream stream = new ByteArrayOutputStream(); 

      final Encoder encoder = EncoderFactory.get().binaryEncoder(stream, null); 
      writer.write(input, encoder); 
      encoder.flush(); 

      return stream.toByteArray(); 
     } 
    } 
Verwandte Themen