Автоконфигурация Kafka Camel Spring Boot не запускается, когда определены несколько компонентов kafkaComponent - PullRequest
1 голос
/ 20 февраля 2020

В настоящее время я использую эту зависимость camel-kafka-starter maven для автоматической настройки моего верблюжьего компонента kafka в Spring Boot.

Если добавить, скажем, параметр, подобный этому camel.component.kafka.configuration.linger-ms=20 , Компонент camel kafka забирает его по маршруту, и я вижу его значение конфигурации в выходных данных журнала. например,

@Component
public class route extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("file://target/inbox")
        .to("kafka:topic?brokers=localhost:9092");
    }
}

Теперь, если я определю еще один компонент camelKafkaComponent, он потеряет автоконфигурацию! Я бы ожидал, что он сохранит настройки, определенные в application.propeties ...

@Configuration
public class MyConfiguration {
  @Bean
  public KafkaComponent myKafkaComponent() {
    return new KafkaComponent();  //missing the linger-ms=20 i set in application.properties!
  }

  @Component
  public class route extends RouteBuilder {
     @Override
     public void configure() throws Exception {
        from("file://target/inbox")
        .to("myKafkaComponent:topic?brokers=localhost:9092");
     }
  }
}

Есть ли способ сохранить автоконфигурацию с помощью некоторого параметра, например,

myKafkaComponent.useAutoConfig()

В идеале в моем приложении мой пользователь определил верблюжий kafkaComponent. Необходимо ли создать другой класс Config и отобразить все эти значения, определенные в документах для верблюдов? (с чем-то вроде String @Value аннотации)

edit: я смотрел на исходный код и также задавался вопросом, есть ли способ вызвать его в моем определении бина.

1 Ответ

2 голосов
/ 20 февраля 2020

Вы можете создать компонент типа

ComponentCustomizer<KafkaComponent>

, который можно использовать для настройки компонента kafka, автоматически настроенного с помощью camel

...