我想按照这里的说明操作:
设置一个KafkaTemplate,它可以序列化并发送我拥有的一些简单的Java POJO . 但我发现文档含糊不清,特别是这一部分:
为此,Spring for Apache Kafka还提供了基于Jackson JSON处理器的JsonSerializer / JsonDeserializer实现 . 当JsonSerializer非常简单并且只允许将任何Java对象写为JSON字节时[] ...尽管从低级Kafka Consumer和Producer的角度来看,Serializer / Deserializer API非常简单和灵活,但它在Messaging上是不够的级别,其中存在KafkaTemplate和@KafkaListener . ...可以直接将MessageConverter注入KafkaTemplate实例,并通过@KafkaListener.containerFactory()属性的AbstractKafkaListenerContainerFactory bean定义注入
所以我的问题是:
-
我的KafkaTemplate的类型是什么?是
KafkaTemplate<String, Object>
吗?或者是KafkaTemplate<String, String>
? -
什么是我的Serializer类?是
StringSerializer
,还是JsonSerializer
? -
创建KafkaTemplate bean时是否使用
kafkaTemplate.setMessageConverter(new StringJsonMessageConverter())
?
抱歉,如果这些是愚蠢的问题 - 我正在试图理解正确的设置方式,而不是“黑客攻击直到它有点工作” .
1 回答
<String, Object>
JsonSerializer
消息转换器仅在使用带有
Message<?>
的发送时使用,而JsonSerializer
则应使用默认值 .