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

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的JsonSerializer / JsonDeserializer实现
JSON处理器。当JsonSerializer非常简单并且只允许
将任何Java对象写为JSON字节[]

...

虽然
Serializer / Deserializer API从
低级卡夫卡消费者和生产者的观点,这还不够
消息传递级别,其中KafkaTemplate和@KafkaListener是
当下。

...

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

所以我的问题是:

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

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

    最佳答案

  • <String, Object>
  • JsonSerializer
  • 仅当使用带有Message<?>的发送时才使用消息转换器,而对于JsonSerializer,则应使用默认值。
  • 08-05 18:30