我正在阅读Spring文档,发现我们可以为单个生产者工厂spring-docs
设置多个映射senderProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
senderProps.put(JsonSerializer.TYPE_MAPPINGS, "foo:com.myfoo.Foo, bar:com.mybar.bar");
但是对于我来说,如何创建Producerfactory
如下所示尚不清楚
@Bean
public ProducererFactory<Foo, Bar> kafkaProducerFactory(KafkaProperties properties,
JsonSserializer customSerializer) {
return new DefaultKafkaConsumerFactory<>(properties.buildProducerProperties(),
customSerializer, customSerializer);
}
据我所知,Foo
必须是关键,Bar
必须是正确的价值?这customSerializer
是什么?我正在寻找具有更多信息的清晰示例。
我的问题是我希望有单个ProducerFactory
和kafkatemplate
会向kafka生成多种类型的消息,例如Foo
,Bar
,Car
是可能吗?
答案 0 :(得分:1)
否;这个
senderProps.put(JsonSerializer.TYPE_MAPPINGS, "foo:com.myfoo.Foo, bar:com.mybar.bar");
仅适用于仅在使用属性时定义反序列化器的情况。
在使用直接采用完全构建的序列化器/解串器对象的DefaultKafkaConsumerFactory
和DefaultKafkaProducerFactory
构造函数时,必须自己配置解串器。
typeMapper = new DefaultJackson2JavaTypeMapper();
typeMapper.setIdClassMapping(myTypeMappingsMap);
deserializer = new JsonDeserializer();
deserlialzer.setTypeMapper(typeMapper);
(以及类似的串行器)。