【发布时间】:2018-07-08 05:52:37
【问题描述】:
我创建了一个 Spring 启动应用程序,它将消息发送到 Kafka 队列(使用 spring 集成 kafka 支持)。我想发送任意 json 序列化的对象。
有没有办法在我的 Spring Boot 应用程序中获取/注入 json-de-/serializer? 或者如何特别反/序列化一个对象?
应用序列化的良好做法是什么?
【问题讨论】:
标签: json spring-boot apache-kafka
我创建了一个 Spring 启动应用程序,它将消息发送到 Kafka 队列(使用 spring 集成 kafka 支持)。我想发送任意 json 序列化的对象。
有没有办法在我的 Spring Boot 应用程序中获取/注入 json-de-/serializer? 或者如何特别反/序列化一个对象?
应用序列化的良好做法是什么?
【问题讨论】:
标签: json spring-boot apache-kafka
Apache Kafka 在其主题中存储和传输字节数组。它附带了许多内置的(反)序列化器,但不包括 JSON 序列化器。幸运的是,Spring Kafka 框架包含一个支持包,其中包含一个 JSON(反)序列化程序,该程序在后台使用 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 替换为您要反序列化的类。
【讨论】: