DefaultKafkaProducerFactory с несколькими сопоставлениями JsonSerializer - PullRequest
0 голосов
/ 29 ноября 2018

Я просматриваю весеннюю документацию и обнаружил, что мы можем иметь несколько сопоставлений для фабрики одного производителя 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 это возможно?

1 Ответ

0 голосов
/ 29 ноября 2018

Нет;

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);

(и аналогично для сериализатора).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...