监视器配置服务器总线kafka后,RefreshListener不刷新键

时间:2019-04-17 12:33:11

标签: spring-boot spring-cloud-config configserver spring-cloud-bus git-webhooks

我是一名Java开发人员,正在使用Spring Cloud Config Server进行Kafka的动态刷新配置。 我为服务器和客户端附加了配置文件(pom和boostrap /应用程序文件):客户端具有.properties文件,而服务器.yaml文件。


我通过在链接处运行docker容器来启动kafka和zookeper服务: https://hub.docker.com/r/johnnypark/kafka-zookeeper/ 我只以1个单位设置分区数。


我启动了服务器和客户端。我为推送事件设置了gitlab webhook,并在推送事件时正确设置了服务器接收到该事件:我推送了文件yaml templateservice-dev.yaml,在其中我更改了键的描述:

消息:你好->消息:你好更新

配置存储库的结构为:

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

每个文件只有1个键:
消息:您好

在这种情况下,我们有一个奇怪的行为,即服务器可以理解对templateservice-dev.yaml文件的编辑,但是密钥(已更新)为空。在日志中,我们有:

o.s.c.c.monitor.PropertyPathEndpoint:刷新:templateservice-dev o.s.cloud.bus.event.RefreshListener:接收到的远程刷新请求。按键已刷新[]

显然,客户端的日志为空,因为服务器未向其发送任何内容。 我使用邮递员为客户端调用/actuator/bus-refresh,它可以正常工作:实际上,属性值已更新(控制器客户端具有@RefreshScope批注)。

Java,Spring Boot,kafka,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>

(服务器)引导文件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: '*'

(服务器)应用程序文件yaml:

server:
  port: 8899

(客户端)引导文件属性:

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端点没有在总线上发送更改。

0 个答案:

没有答案