我们正在考虑在我们的消息传递中使用kafka,我们的应用程序是使用spring开发的。所以,我们计划用SpringKafka。
生产者将消息作为hashmap对象放入队列。我们有json序列化程序,我们假设Map将被序列化并放入队列中。这是生产者配置。
spring:
kafka:
bootstrap-servers: localhost:9092
producer:
key-serializer: org.springframework.kafka.support.serializer.JsonSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
另一方面,我们有一个侦听器,它侦听生产者发布消息的同一主题。以下是使用者配置:
spring:
kafka:
consumer:
group-id: xyz
key-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
我们的侦听器方法:
public void listener(SomeClass abx)
我们希望json将被反序列化,并生成一个类型为“someclass”的对象。但显然,它抛出了反序列化异常。
我们看到的文章很少,建议是这样做:
@Bean
public ConsumerFactory<String, Car> consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerConfigs(), new StringDeserializer(),
new JsonDeserializer<>(Car.class));
}
我们不想写一些代码来创建反序列化程序。有什么样板文件我们遗漏了吗?任何帮助都将不胜感激!!
1条答案
按热度按时间9nvpjoqh1#
请参阅引导文档。特别地:
您还可以按如下方式配置spring kafka jsondeserializer:
spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
spring.kafka.consumer.properties.spring.json.value.default.type=com.example.Invoicespring.kafka.consumer.properties.spring.json.trusted.packages=com.example,org.acme