我正在尝试按照此处的说明进行操作:
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<String, Object>
吗?还是KafkaTemplate<String, String>
? 序列化器类?是
StringSerializer
还是JsonSerializer
? 创建我的KafkaTemplate bean时使用
kafkaTemplate.setMessageConverter(new StringJsonMessageConverter())
吗? 抱歉,如果这些都是愚蠢的问题,我想了解的是正确的设置方式,而不是“先对其进行破解,直到它起作用为止”。
最佳答案
<String, Object>
JsonSerializer
Message<?>
的发送时才使用消息转换器,而对于JsonSerializer
,则应使用默认值。