свойства весеннего ботинка yaml - PullRequest
0 голосов
/ 09 ноября 2018

Я запускаю весеннюю загрузку и 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);
    }

1 Ответ

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

Если вы хотите использовать пунктирные свойства в файле yml, вам нужно сделать это так же, как boot для произвольных свойств, которые не поддерживаются напрямую в качестве загрузочных свойств:

spring:
  kafka:
    consumer:
      properties:
        group.id: foo

т.е. заполнить Properties свойство.

Причина, по которой boot обеспечивает первоклассную поддержку некоторых свойств, заключается в том, что редакторы IDE могут предоставлять вспомогательные материалы, что невозможно при произвольных свойствах.

...