Интеграция пользовательского потребителя kafka с клиентом конфигурации облака Spring - PullRequest
1 голос
/ 08 июня 2019

Мы используем весенний конфигурационный клиент для динамического обновления свойств. Мы добавили Spring-Cloud-Starter-Bus-Kafka на пути к классам, и все работает отлично. Pom версия всех этих зависимостей 2.X.

Что я хочу сделать, так это удалить spring-cloud-starter-bus-kafka и добавить свой пользовательский код, чтобы выбрать пользовательское событие и обновить контекст, а затем обновить свойства с помощью клиента облачной конфигурации. Я верю, что где-то весна зовет ConfigServicePropertySourceLocator.locate. В общем, я хочу просто повторить то, что Spring сделал в spring-cloud-starter-bus-kafka, чтобы сделать обновление свойств в реальном времени возможным.

Причина, по которой я все это делаю, заключается в том, что я внутренне использую старую версию kafka-клиентов. У нас есть доморощенная версия, которая поддерживает шифрование, а что нет. Проблема наступает, так как spring-cloud-starter-bus-kafka использует 2.X версию kakfa-клиентов, и наша домашняя версия не готова к этому. Из-за этого любой из них работает в определенный момент времени.

Может кто-нибудь показать мне какой-нибудь указатель на то, что нужно сделать, чтобы использовать событие refresh от kafka и обновить свойство? Я не думаю, что это слишком сложно. Он должен использовать событие kafka и где-то вызывать ConfigSourceLocator для обновления свойств.

1 Ответ

3 голосов
/ 08 июня 2019

Это даже проще, чем это.Если вы посмотрите в класс RefreshListener, то увидите, что все, что он делает, это

    Set<String> keys = this.contextRefresher.refresh();
    log.info("Received remote refresh request. Keys refreshed " + keys);

Где contextRefresher - это org.springframework.cloud.context.refresh.ContextRefresher.

. Это вызовет код, который обрабатывает поиск.автоматическая настройка.

...