我正在查看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
可能吗? 最佳答案
没有;这个
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);
(和类似的串行器)。