8

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

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

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

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

...

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

...

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

所以我的问题是:

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

如果这些是愚蠢的问题,我深表歉意 - 我试图理解设置它的正确方法,而不是“破解它直到它有点工作”。

4

1 回答 1

6
  1. <String, Object>

  2. JsonSerializer

  3. Message<?>消息转换器仅在使用带有 a 和 a的发送时使用,JsonSerializer您应该使用默认的。

于 2016-11-01T13:18:34.403 回答