Spring Cloud Bus not working /bus/refresh call goes to controller and searching mapping in controller and failing

2.1k Views Asked by At

I have configured my application with config server and github supported external config files. It works fine when I am having single instance of my application in cloud foundry.

But for multiple instance it is said to implement spring cloud bus to apply external config changes to all the instances. For this I have bind my config server with rabbit MQ instance available on Pivotal Cloud foundry. have added spring.cloud.starter.bus.amqp jar in my build.gradle file.

Problem: But when I am hitting POST request to client app at: http://server:port/bus/refresh the call goes to controller rather than refreshing all the instances and failing as no mapping for same.

Please let me know if I am missing any configuration to make spring-cloud-bus work. Thanks in advance!

application.properties(Client application):

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(Client application):

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= ********

application.properties file in GIT repo:

logging.level.ROOT=WARN
1

There are 1 best solutions below

10
On

What are server.servlet-path and management.context-path in client app set to?

I think you might need to send the request to http://host/<management.context-path>/bus/refresh.

Or better yet, to http://config-server-host/monitor so that it publishes a message to a topic in RabbitMQ and all client apps get notified.

Configuration snippets, source code and more details could be found at my blog post: Refreshable Configuration using Spring Cloud Config Server, Spring Cloud Bus, RabbitMQ and Git