RefreshListener не обновляет ключ после настройки сервера конфигурации шины kafka - PullRequest
0 голосов
/ 17 апреля 2019

Я разработчик Java, использую Spring Cloud Config Server для конфигурации динамического обновления с Kafka. Я прилагаю файлы конфигурации (файлы pom и boostrap / application) для стороны SERVER и CLIENT: у клиента есть файлы .properties, а на сервере .yaml.


Я запустил службы kafka и zookeper, запустив Docker-контейнер по ссылке: https://hub.docker.com/r/johnnypark/kafka-zookeeper/ в котором я устанавливаю только количество разделов в 1 единице.


Я запустил сервер и клиент. Я установил gitlab webhook для Push-события и правильно, когда push-событие сервер получает событие: я запихнул файл yaml templateservice-dev.yaml, в котором я изменил описание ключа:

сообщение: Hello -> сообщение: Hello UPDATE

Структура репозитория конфигурации:

Root Folder:
templateservice
    |--->templateservice-dev.yaml
    |--->templateservice-prod.yaml
    |--->templateservice.yaml

Каждый файл имеет только 1 ключ:
сообщение: Hello

В этом случае у нас странное поведение, при котором сервер понимает редактирование файла templateservice-dev.yaml, но ключ (который обновлен) пуст. В журнале у нас есть:

o.s.c.c.monitor.PropertyPathEndpoint: обновление для: templateservice-dev o.s.cloud.bus.event.RefreshListener: получен удаленный запрос на обновление. Ключи обновились []

очевидно, что журнал клиента пуст, потому что сервер ему ничего не отправляет. Я использовал почтальон для вызова /actuator/bus-refresh для клиента, и он работает правильно: действительно, значение свойства обновляется (на стороне клиента контроллера есть @RefreshScope аннотация).

Java, Spring Boot, кафка, Spring Cloud

Извлечь сервер pom.xml:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-monitor</artifactId>
</dependency>

Извлечение клиента pom.xml:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>

(SERVER) файл начальной загрузки yaml:

spring:
  stream:
    kafka:
      binder:
        brokers: "localhost:9092"
        zkNodes: "localhost:2181"
        autoAddPartitions: true
  application:
    name: config-server
  profiles:
    include: dev,prod
  cloud:    
     bus:
      enabled: true
      env:
        enabled: true
      refresh:
        enabled: true
    config:
      label: develop
      server:
        git:
          uri: http://gitserver.devops.it/gitlab/backend/config-server-repo.git
          search-paths: t*,c*
          force-pull: true
          username: user
          password: password
          default-label: develop
      monitor:
        gitlab:
          enabled: true
management:
  endpoints:
    web:
      exposure:
        include: '*'

(SERVER) файл приложения yaml:

server:
  port: 8899

(CLIENT) Свойства файла начальной загрузки:

spring.profiles.active=dev
spring.cloud.config.uri=http://config-server:8899
spring.cloud.config.label=develop
spring.application.name=templateservice
management.endpoints.web.exposure.include=*

spring.cloud.bus.trace.enabled=true
spring.cloud.bus.enabled=true
spring.cloud.bus.env.enabled=true
spring.cloud.bus.refresh.enabled=true
spring.cloud.stream.kafka.binder.zkNodes=localhost:2181
spring.cloud.stream.kafka.binder.brokers=localhost:9092
spring.cloud.stream.kafka.binder.autoAddPartitions=true
endpoints.spring.cloud.bus.refresh.enabled=true
endpoints.spring.cloud.bus.env.enabled=true

Похоже, что конечная точка / monitor не отправляет изменения в шине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...