Я настроил свой весенний загрузочный проект, используя Kafka. Я могу получать и публиковать любые строковые сообщения.
Строковое сообщение не лучший способ обработки. Было бы гораздо полезнее иметь функциональность для преобразования по умолчанию сообщения из строки в объект.
Реализация этой функции Мне нужно переместить почти все мои конфигурации Kafka с yml
на java
(используя свойство). ... пример производителя
@Bean
public Map<String, Object> producerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, AccountSerializer.class);
return props;
}
@Bean
public ProducerFactory<String, Account> producerFactory() {
return new DefaultKafkaProducerFactory<>(producerConfigs());
}
@Bean
public KafkaTemplate<String, Account> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
Код работает, но я принял упрощение. В лучшем случае я хотел бы иметь элегантно настроенный yml
, возможно, будут некоторые java-изменения. Но, делая это напрямую, я получу дополнительные 3 бина для настройки каждого kafkaTemplate
и listenerFactory
.
Возможно, это упростит конфигурации на будущее (мне понадобится больше дополнительных Serializer
`Deserializer`)? Как?
приписка
Я хотел бы настроить yml
аналогично в этом примере :
spring:
kafka:
consumer:
group-id: foo
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
app:
topic:
foo: foo.t
но мне непонятно, как настроить здесь потребителей \ производителей с разными (De
) Serializer
с, сопоставлять их по указанной теме ...