Я запускаю весеннюю загрузку и kafka с автоматической настройкой (только с помощью аннотаций) и с опорами, определенными в файле .yaml, то есть:
spring:
kafka:
bootstrap-servers: someserver:9999
consumer:
group-id: mygroup
....
@KafkaListener()
public void receive(ConsumerRecord<?, ?> consumerRecord) {
....
}
И все работает нормально, пружинные карты, т. Е. Идентификатор группы полей правильно.
Но когда я пытаюсь настроить kafka вручную (с помощью ConsumerFactory и ConsumerConfig), используя один и тот же файл yaml, я сталкиваюсь с проблемой.
В классе ConsumerConfig свойства кафки именуются с помощью. по названию, а не _ то есть ::1006*
public static final String GROUP_ID_CONFIG = "group.id";
Так что я не могу просто загрузить их в карту и передать карту в ConsumerFactory, потому что ключи с _ нет.
Я не хочу делать это так безобразно, как показано в примере, предоставленном командой Spring Kafka, когда они отображают реквизиты из yaml в класс config, а затем вручную назначают реквизиты на карте для передачи на фабрику:
@ConfigurationProperties(prefix = "kafka")
public class ConfigProperties {
private String brokerAddress;
private String topic;
private String fooTopic;
public String getBrokerAddress() {
return this.brokerAddress;
}
.....
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.configProperties.getBrokerAddress());
.....
return new DefaultKafkaProducerFactory<>(props);
}