2017-01-24 13 views
4

私はSpring Boot 1.5.0 RCでSpring Kafka 1.1.2-RELEASEを使用しており、org.springframework.kafka.support.serializer.JsonSerializer/org.springframework.kafka.support.serializer.JsonDeserializerに拡張されたカスタム値serialiser/deserialiserクラスを設定しました。これらのクラスは、コンストラクタを介して提供できるJackson ObjectMapperを使用します。Spring Kafkaシリアライザ/デシリアライザにObjectMapperを注入してください

SpringのコンテキストからObjectMapperを挿入することは何とかできますか?私はすでにシリアライザ/デシリアライザで再利用したいObjectMapperを設定しています。

答えて

4

JsonSerializerJsonDeserializer@Beanに設定できます。 希望するものをObjectMapperに注入します。私の重複を解決する

@Bean 
    public ProducerFactory<Integer, String> producerFactory() { 
     DefaultKafkaProducerFactory<Integer, String> producerFactory = 
       new DefaultKafkaProducerFactory<>(producerConfigs()); 
     producerFactory.setValueSerializer(jsonSerializer()); 
     return producerFactory; 
    } 
+1

おかげで、:そしてDefaultKafkaProducerFactoryDefaultKafkaConsumerFactory Bean定義でこれらの豆を使用しています。しかし、Springブート1.5のKafkaの新しい自動設定に関して、私は 'org.springframework.boot.autoconfigure.kafka.KafkaProperties#buildProducerProperties'を使って他のすべての設定を動作させ続けることができると思いますが、それでもバイパスするのは変わっていません'spring.kafka.producer.value-serializer'の設定値は? – wjans

+1

はい、カスタムbeanに 'buildProducerProper ties()'を再利用する必要があります。そして、いいえ、 '.producer.value-serializer'はカフカの要求に応じてインスタンス化されるクラスです。独自のインスタンスを使用する場合は、それを直接注入するしかありません。この問題については、 'KafkaProducer(Map configs、Serializer keySerializer、Serializer valueSerializer)' APIを参照してください。 –

関連する問題