账单工程(bill)是我之前的一个spring boot项目,以下是将其重构为spring cloud项目的过程
0. 建一个空工程spring-cloud-bill便于管理各个微服务 1. 创建EurekaServer在刚刚的空工程下新建一个module,选择Spring Initializr——starter service URL:如果default选项点击下一步后需要等很久可以使用自定义地址:https://start.springboot.io
指定springboot版本,然后选择依赖:
Spring Boot DevTools、 Lombok
Eureka Server
完成创建后将application.properties的后缀改为yml,并进行如下配置:
server:
port: 9010 # 服务运行的端口号
spring:
application:
name: eureka-server # 服务名称(唯一)
eureka:
client:
service-url:
defaulteZone: http://localhost:9010/eureka # 配置Eureka Server的地址,注意/eureka不可更改
register-with-eureka: false # 不注册自己,默认为true,如果这里不配置为false,会报错:Cannot execute request on any known server
fetch-registry: false # 不拉取服务
启动器
@SpringBootApplication
@EnableEurekaServer // 声明当前应用为Eureka Server
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
启动并测试
启动后访问http://localhost:9010,可以看到eureka管理界面:
红色警告是eureka的自我保护机制:如果Eureka Server接收到的服务续约低于配置的百分比阈值(默认为15分钟内低于85%),则服务器开启自我保护模式,即不再剔除注册列表的信息。
在刚刚工程下再新建一个module,还是选择spring initializr
指定springboot版本,然后选择依赖:
Spring Boot DevTools、 Lombok
Eureka Discovery Client
给module取名为bill_service
初始化好后,将application.properties的后缀改为yml,并进行如下配置:
server:
port: 9001 # 服务运行的端口号
spring:
application:
name: bill-service # 服务的名称(唯一),若eureka没有指定instance-id,则服务名称会作为eureka服务注册时的id
# 连接池
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: password
url: jdbc:mysql://127.0.0.1:3306/bill-manager?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
eureka:
client:
service-url:
defaultZone: http://localhost:9010/eureka # 配置eureka服务的地址,注意/eureka是固定的,不可以自定义
# 整合mybatis
mybatis:
type-aliases-package: com.xj.pojo # mybatis别名扫描
mapper-locations: classpath:/mybatis
@RequestMapping("/key")
public void key() {
System.out.println("remote application key: " + key);
}
运行起来后访问 http://localhost:9001/key,可以获得配置的key值,在gitee修改该值,然后使用postman发起post请求,访问 http://localhost:9011/actuator/busrefresh,随后Spring Cloud Bus 会向RabbitMQ消息队列推送消息,bill-service监听到消息后,便重新获取配置文件,再次访问 http://localhost:9001/key,发现key值已经更新。



