【发布时间】:2016-11-01 21:18:34
【问题描述】:
我正在尝试按照此处的说明进行操作:
设置一个 KafkaTemplate 可以序列化和发送我拥有的一些简单的 Java POJO。但我发现文档含糊不清,尤其是这一部分:
为此,Spring for Apache Kafka 还提供 基于 Jackson 的 JsonSerializer/JsonDeserializer 实现 JSON 处理器。当 JsonSerializer 非常简单并且可以 将任何 Java 对象写为 JSON byte[]
...
虽然 Serializer/Deserializer API 从 低级的 Kafka Consumer 和 Producer 视角,还不够 消息传递级别,其中 KafkaTemplate 和 @KafkaListener 位于 当下。
...
MessageConverter 可以是 直接通过注入到 KafkaTemplate 实例中 AbstractKafkaListenerContainerFactory bean 定义 @KafkaListener.containerFactory() 属性
所以我的问题是:
- 我的 KafkaTemplate 是什么类型的?是
KafkaTemplate<String, Object>吗?还是KafkaTemplate<String, String>? - 什么是我的
序列化器类?是
StringSerializer,还是JsonSerializer? - 做
我在创建 KafkaTemplate bean 时使用
kafkaTemplate.setMessageConverter(new StringJsonMessageConverter())?
如果这些是愚蠢的问题,我深表歉意 - 我试图了解设置它的正确方法,而不是“破解它直到它有点工作”。
【问题讨论】:
-
我使用的是 kakfa 库中的 Producer 和 Consumer。因此,在创建这些时,我使用 kafka 库中的键和值序列化器作为 (StringSerializer)。我阅读了几个博客来使用 StringSerializer。在插入队列时将 json 转换为字符串,在阅读消息后反之亦然)。
标签: java spring serialization apache-kafka spring-kafka