我正在查看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是什么?我正在寻找更多信息的清晰示例。

我的问题是我希望有单个ProducerFactorykafkatemplate会向kafka生成多种类型的消息,例如FooBarCar可能吗?

最佳答案

没有;这个

senderProps.put(JsonSerializer.TYPE_MAPPINGS, "foo:com.myfoo.Foo, bar:com.mybar.bar");


仅适用于仅使用属性时定义解串器的情况。

当使用直接采用完全构建的序列化器/解串器对象的DefaultKafkaConsumerFactoryDefaultKafkaProducerFactory构造函数时,必须自己配置解串器。

typeMapper = new DefaultJackson2JavaTypeMapper();
typeMapper.setIdClassMapping(myTypeMappingsMap);
deserializer = new JsonDeserializer();
deserlialzer.setTypeMapper(typeMapper);


(和类似的串行器)。

09-11 18:36