【问题标题】:Spring Cloud Bus not working /bus/refresh call goes to controller and searching mapping in controller and failingSpring Cloud Bus 不工作 /bus/refresh 调用转到控制器并在控制器中搜索映射并失败
【发布时间】:2017-10-28 10:08:36
【问题描述】:

我已经使用配置服务器和 github 支持的外部配置文件配置了我的应用程序。当我在 Cloud Foundry 中拥有我的应用程序的单个实例时,它可以正常工作。

但是对于多个实例,据说实现 spring cloud bus 以将外部配置更改应用于所有实例。为此,我已将我的配置服务器与 Pivotal Cloud Foundry 上可用的 rabbit MQ 实例绑定。在我的 build.gradle 文件中添加了 spring.cloud.starter.bus.amqp jar。

问题:但是当我在以下位置向客户端应用程序发送 POST 请求时: http://server:port/bus/refresh 调用转到控制器而不是刷新所有实例并且由于没有相同的映射而失败。

如果我缺少任何使 spring-cloud-bus 工作的配置,请告诉我。 提前致谢!

application.properties(客户端应用程序):

spring.profiles=cloud  
spring.rabbitmq.host= 10.17.128.102
spring.rabbitmq.port= 5672
spring.rabbitmq.virtual-host= *****
spring.rabbitmq.username= ******
spring.rabbitmq.password= *****
rabbit.exchangeName= demoPartyServiceexc
rabbit.routingKey= demoPartyService
rabbit.queueName= demoPartyServicequeue
logging.level.ROOT= ERROR 

bootstrap.properties(客户端应用程序):

spring.application.name=demo-api
spring.cloud.bus.enabled=true
spring.cloud.config.bus.enabled=true
spring.cloud.bus.amqp.enabled=true
spring.cloud.bus.refresh.enabled=true
spring.cloud.bus.env.enabled=true
spring.cloud.config.uri=https://config-a5e99419-8179-47f7-8c23-62ed5b38db0b.cf.com
spring.cloud.config.server.bootstrap=true
spring.cloud.config.server.git.uri= My Github repository URI
spring.cloud.config.server.git.username= ********
spring.cloud.config.server.git.password= ********

GIT 存储库中的 application.properties 文件:

logging.level.ROOT=WARN

【问题讨论】:

  • 谢谢!问题解决了!将 spring-cloud-bus-starter-amqp jar 版本从 1.0.1 更改为 1.1.0 后,它可以开箱即用。

标签: spring rabbitmq spring-cloud-bus configserver


【解决方案1】:

客户端应用程序中的server.servlet-path 和management.context-path 设置为什么?

我认为您可能需要将请求发送至http://host/<management.context-path>/bus/refresh。

或者更好的是,发送至http://config-server-host/monitor,以便它向RabbitMQ 中的主题发布消息,并通知所有客户端应用程序。

配置 sn-ps、源代码和更多细节可以在我的博文中找到:Refreshable Configuration using Spring Cloud Config Server, Spring Cloud Bus, RabbitMQ and Git

【讨论】:

  • 感谢 ootero 关注我的问题。我还没有配置
  • 我没有在 application.yml 中为 server.servlet-path 和 management.context-path 配置任何内容,尽管 /refresh URL 对于我的应用程序的单个实例来说工作得很好。要刷新 gradle 文件 spring-cloud-starter-bus-amqp spring-cloud-starter-config 中添加的 jars 下面的多个实例 更新了 application.yml : spring.cloud.bus.refresh.enabled: true spring.cloud.bus.env。启用:真 rabbitmq:主机:10.17.128.102 端口:61613 虚拟主机:02be2c26-4f91-438f-b05a-050333783e88
  • 我正在使用 PCF 本身提供的配置服务器,它与我在 PCF 中的客户端应用程序绑定在 PCF 上可用的绑定 Rabbit MQ 实例,但是当我在配置服务器的 URI 上点击 /monitor 时,它给出以下错误。 { "error": "unauthorized", "error_description": "访问此资源需要完全身份验证" }
  • 我猜你需要通过 PCF 文档,它可能需要凭据才能访问 /monitor
  • 任何猜测为什么总线/刷新不起作用是我们缺少客户端的任何配置吗?我们收到 POST server:port/bus/refresh 不存在
猜你喜欢
  • 2021-04-15
  • 2021-02-21
  • 2017-10-12
  • 2017-05-18
  • 2020-07-06
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
相关资源
最近更新 更多