系列7-springCloud微服务-服务总线Bus

1.服务端搭建
步骤1:新建【springCloud-bus】修改pom文件,添加如下内容:
org.springframework.cloud
spring-cloud-starter-bus-amqp
org.springframework.boot
spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-config-server
org.springframework.cloud
spring-cloud-starter-eureka
com.ultrapower
springCloud-security
步骤2:添加【springCloud-bus】application.yml文件,并添加如下内容:
server:
port: 8300
spring:
application:
name: springCloud-config #配置中心的应用名称
cloud:
config:
server:
git:
uri: git@gitServerIp:springCloudConfig.git #远程git的地址
#username: yourname #远程git认证的账号
#password: yourpass #远程git认证的密码 (此处在我的电脑上已经进行过ssh配置,所有我并未设置)
rabbitmq: #消息中间件连接信息
host: localhost
port: 5672
username: guest
password: guest
eureka:
client:
serviceUrl:
defaultZone: http://ejava:ehello@localhost:8000/eureka/
注意此处的框架搭建是以注册中心作为集群中心的模式搭建的,所以需要注册到Eureka中
步骤3:添加【springCloud-bus】启动类
@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigApplication {

public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);

}

}
步骤4:修改【springCloud-security】修改如下标红位置,角色需要设置为“ ACTUATOR”,http的请求中需要设置对CSRF的禁用。
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Resource
public void configGlobal(AuthenticationManagerBuilder auth)
throws Exception {
//设置所有微服务的认证账户密码
auth.inMemoryAuthentication().withUser("java").password("hello")
.roles("ACTUATOR");
}
@Override
public void configure(WebSecurity web) throws Exception {
//设置可放行服务,对监控程序放行
web.ignoring().antMatchers("/hystrix.stream","turbine.stream");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// 表示所有的访问都必须进行认证处理后才可以正常进行
http.httpBasic().and().authorizeRequests().anyRequest()
.fullyAuthenticated() .and().csrf().disable();
// 所有的Rest服务一定要设置为无状态,以提升操作性能
http.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
}
步骤5:启动Eureka,springCloud-bus测试是否能正常启动,是否注册到注册中心。检查地址:
http://localhost:8000
http://localhost:8300/springCloud-dev.yml

2.客户端调用
步骤1:新建客户端【springCloud-bus-client】修改pom文件,添加如下内容:
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-bus-amqp
org.springframework.boot
spring-boot-starter-actuator
com.ultrapower
springCloud-security
步骤2:修改【springCloud-bus-client】的application.yml文件,添加如下内容:
spring:
application:
name: springCloud-configClient-service
步骤3:【springCloud-bus-client】添加bootstrap.yml配置文件,添加如下内容:
server:
port: 8803
spring:
cloud:
config:
name: springCloud #读取配置文件的文件名字
profile: dev #读取配置文件的段
#uri: http://localhost:8888/ #配置中心的地址,此处如果是负载均衡,需要用“,”分隔
username: java #如果配置中心设置了安全认证,在此处设置认证账号
password: hello #如果配置中心设置了安全认证,在此处设置认证密码
discovery:
enabled: true
service-id: springCloud-config
rabbitmq: #消息中间件连接信息
host: localhost
port: 5672
username: guest
password: guest
eureka:
client:
serviceUrl:
defaultZone: http://ejava:[email protected]:8000/eureka/
步骤4:【springCloud-bus-client】新建InfoRest类,注意添加 @RefreshScope,该注解是使用bus刷新配置的关键:
@Component //扫描
@RefreshScope //刷新
public class InfoRest {
@Value("${info.app.name}")
private String appname;
@Value("${info.app.version}")
private String appverion;
/**
* @return the appname
*/
public String getAppname() {
return appname;
}
/**
* @return the appverion
*/
public String getAppverion() {
return appverion;
}
}
步骤5:【springCloud-bus-client】新建restController,打印读取到的信息
@RestController
public class UltraServiceController {
@Resource
InfoRest info;
@RequestMapping("/get")
public Object getSessionId() {
return "获取到的引用名称:"+info.getAppname()+",获取到的版本:"+info.getAppverion();
}
}
步骤6:【springCloud-bus-client】新建启动类
@SpringBootApplication
@EnableEurekaClient
public class UtralServiceApplication {

public static void main(String[] args) {
SpringApplication.run(UtralServiceApplication.class, args);
}

}
步骤7:启动各个服务,进行验证:
访问Eureka: http://localhost:8000
访问springCloud-bus-client服务: http://localhost:8803/get
访问RibbitMQ管理界面: http://localhost:15672/#/
修改git上的配置文件
并上传到git服务器上,通过curl命令进行bus的刷新,命令如下:
curl -X POST http://java:hello@localhost:8300/bus/refresh
windows下执行curl命令需要借助于插件,关于此插件请自行下载。
执行成功后,访问 http://localhost:8803/get ,和 http://localhost:15672/#/ 即可以查看到变化。

你可能感兴趣的:(springCloud学习笔记)