我创建了一个Spring启动应用程序,它将消息发送到Kafka队列(使用spring integration kafka支持)。我想发送任意json序列化的对象。
有没有办法在我的Spring启动应用程序中获取/注入json-de- / serializer? 或者如何临时取消/序列化对象?
应用序列化的好方法是什么?
答案 0 :(得分:2)
Apache Kafka在其主题中存储和传输字节数组。它附带了许多内置(de)序列化程序,但不包括JSON序列化程序。幸运的是,Spring Kafka框架包含一个支持包,其中包含一个JSON(de)序列化器,它使用了一个Jackson ObjectMapper。 您可以添加像这样的配置文件
@Configuration
public class KafkaConfiguration {
@Bean
public ConsumerFactory<String, Operation> consumerFactory(KafkaProperties kafkaProperties) {
return new DefaultKafkaConsumerFactory<>(kafkaProperties.buildConsumerProperties(), new StringDeserializer(), new JsonDeserializer<>(Operation.class));
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, Operation> kafkaListenerContainerFactory(ConsumerFactory<String, Operation> consumerFactory) {
ConcurrentKafkaListenerContainerFactory<String, Operation> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory);
return factory;
}
}
将Operation
替换为您要反序列化的类。