我正在查看spring文档,发现我们可以为单个生产者工厂春博士提供多个映射
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产生多类型的信息给卡夫卡,例如Foo,Bar,Car,这可能吗?
发布于 2018-11-29 17:35:06
不,这个
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);(与序列化程序类似)。
https://stackoverflow.com/questions/53544093
复制相似问题