我试着按照这里的说明做:
http://docs.spring.io/spring-kafka/docs/1.1.1.release/reference/htmlsingle/#_serialization_deserialization_and_message_conversion
设置一个kafkatemplate,它可以序列化并发送一些简单的javapojo。但我发现文件含糊不清,尤其是这部分:
为此,springforapachekafka还提供了基于jacksonjson处理器的jsonserializer/jsondesializer实现。当jsonserializer非常简单,只允许将任何java对象作为json字节[]写入时
...
虽然从低级kafka使用者和生产者的Angular 来看,序列化器/反序列化器api非常简单和灵活,但在消息传递级别上,kafkatemplate和@kafkalistener是存在的,这是不够的。
...
messageconverter可以直接注入到kafkatemplate示例中,也可以通过@kafkalistener.containerfactory()属性的抽象kafkalistenerContainerFactory bean定义注入
所以我的问题是:
我的Kafka模板是什么类型的?它是 KafkaTemplate<String, Object>
? 还是这样 KafkaTemplate<String, String>
?
我的序列化程序类是什么?它是 StringSerializer
,还是 JsonSerializer
?
我用什么 kafkaTemplate.setMessageConverter(new StringJsonMessageConverter())
当创建我的kafkatemplatebean时?
抱歉,如果这些都是愚蠢的问题-我试图理解正确的方式设置它,而不是“黑客,直到它有点工作”。
1条答案
按热度按时间ztyzrc3y1#
<String, Object>
JsonSerializer
消息转换器仅在使用接受Message<?>
带着一个JsonSerializer
你应该使用默认的。