企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 一、config server集成Bus 通过maven坐标引入必须依赖 ~~~ <!--添加基于RabbitMQ的Spring Cloud Bus的支持 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <!--在Spring Boot2.0版本需要actuator提供刷新请求接口:“/actuator/bus-refresh” --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> ~~~ 加上如下配置:指定RabbitMQ消息中间件的服务地址。因为我们的Spring Cloud Bus作为消息发布者向rabbitMQ中放入“配置刷新”消息,所以需要rabbit的地址及认证信息。 ~~~ spring: rabbitmq: host: 192.168.161.3 port: 5672 username: guest password: guest ~~~ 加上如下配置:暴露配置刷新服务端点。 > 笔者在使用当前版本做实验的时候单独暴露bus-refresh是不生效的(访问结果是405),笔者在之前版本实验过是生效的(下文代码注释掉的部分)。找不到任何理由,我猜想可能是版本bug,所以我是用的是include:"\*"来完成任务。虽然开放了actuator的所有服务端点,但是我们加上Spring security认证也提升安全性。 ~~~ management: endpoints: web: exposure: include: "*" # exposure: # include: bus-refresh ~~~ 如果你的config server和我一样引入了spring-boot-starter-security,把下面的代码配置加入。否则通过“/actuator/bus-refresh”访问将会报错:401,没有权限访问。 ~~~ @Configuration public class ConfigServerWebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 都是无状态请求,不需要session,节省资源 http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER); //关闭csrf跨站请求防御 http.csrf().disable(); // 所有的请求必须登录认证后才能访问 http.authorizeRequests().anyRequest().authenticated().and().httpBasic(); } } ~~~ ## 二、集成结果认证 登录RabbitMQ管理界面,有一个channel表示我们已经成功集成rabbitMQ ![](https://img.kancloud.cn/51/29/5129ba2c40fb1bae337d0d45ea3dbe30_1160x306.png) 显示如下topic,表示我们成功集成了Spring Cloud Bus ![](https://img.kancloud.cn/0f/a0/0fa0e95dfb22b9e0bca6e06c0575b149_845x477.png) PostMan访问:“[http://localhost:8771/actuator/bus-refresh”](http://localhost:8771/actuator/bus-refresh%E2%80%9D),响应结果为204(虽然暂时我们没有RabbitMQ的消息接收端,但是不影响请求测试) ![](https://img.kancloud.cn/2b/5b/2b5be6705c49f504a899845f9ec540f7_1498x549.png) ## 附录:截止目前Config Server的所有配置 application.yml ~~~ server: port: 8771 spring: application: name: zimug-server-config cloud: inetutils: preferredNetworks: - 192.168 ignoredInterfaces: - .*VirtualBox.* config: server: git: uri: https://gitee.com/hanxt/dongbb-cloud searchPaths: zimug-server-config-repo username: password: security: basic: enabled: true #启用基本认证(默认) user: name: zimug password: pwd123456 rabbitmq: host: 192.168.161.3 port: 5672 username: guest password: guest eureka: client: service-url: defaultZone: http://zimug:centerpwd@peer1:8761/eureka/eureka/,http://zimug:centerpwd@peer2:8761/eureka/eureka/,http://zimug:centerpwd@peer3:8761/eureka/eureka/ instance: preferIpAddress: true management: endpoints: web: exposure: include: "*" ~~~