Spring Kafka JsonSerializer的用法

Mat*_*att 4 java serialization spring apache-kafka spring-kafka

我正在尝试按照此处的说明进行操作:

http://docs.spring.io/spring-kafka/docs/1.1.1.RELEASE/reference/htmlsingle/#_serialization_deserialization_and_message_conversion

设置一个KafkaTemplate可以序列化并发送一些我拥有的简单Java POJO。但是我发现文档比较模糊和混乱,尤其是这部分:

为此,Spring for Apache Kafka还提供了基于Jackson JSON处理器的JsonSerializer / JsonDeserializer实现。当JsonSerializer非常简单,只允许将任何Java对象写为JSON字节[]

...

尽管从低级的Kafka消费者和生产者角度来看,Serializer / Deserializer API非常简单和灵活,但在存在KafkaTemplate和@KafkaListener的消息传递级别上,这还不够。

...

MessageConverter可以直接通过@ KafkaListener.containerFactory()属性的AbstractKafkaListenerContainerFactory bean定义注入到KafkaTemplate实例中。

所以我的问题是:

  • 我的KafkaTemplate是什么类型?是KafkaTemplate<String, Object>吗 还是KafkaTemplate<String, String>吗?
  • 我的序列化程序类是什么?是StringSerializer不是JsonSerializer
  • kafkaTemplate.setMessageConverter(new StringJsonMessageConverter())创建我的KafkaTemplate bean时要使用?

抱歉,如果这些都是愚蠢的问题,我想了解的是正确的设置方式,而不是“先对其进行破解,直到它起作用为止”。

Gar*_*ell 5

  1. <String, Object>

  2. JsonSerializer

  3. 仅当使用Message<?>带有a 的发送时使用消息转换器,而使用a的发送JsonSerializer则应使用默认值。