接上文 SpringCloud-消息组件
1 注册Bus
Bus需要基于一个具体的消息队列实现,比如RabbitMQ.还使用最开始的服务拆分项目,比如现在借阅服务的某个接口调用时,能给用户服务和图书服务发送一个通知。
首先父项目导入SpringCloud依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.1</version><type>pom</type><scope>import</scope>
</dependency>
子项目导入依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
book服务也是同样添加依赖。 然后在配置文件中将RabbitMQ的相关信息配置:
spring:rabbitmq:addresses: 8.130.172.119username: adminpassword: passwordvirtual-host: /
management:endpoints:web:exposure:include: "*" #暴露端点,一会用于提醒刷新
然后启动三个服务
此时三个服务自动生成了各自的消息队列,这样就可以监听并接受消息了。
2 部署配置中心
参考
https://editor.csdn.net/md/?articleId=132781568
先关闭三个服务,然后新增模块
导入依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
编写启动类
编写配置文件
在配置文件添加本地仓库的一些信息(远程仓库同理)
server:port: 8700
spring:application:name: config-servercloud:config:server:git:# 这里填写的是本地仓库地址,远程仓库直接填写远程仓库地址 http://git...uri: file://G:\springcloud\config-repo# 默认分支设定为你自己本地或是远程分支的名称default-label: master
启动config服务,查看仓库的文件内容
此时服务器搭建好了。
搭建客户端
导入依赖,只给book服务添加,这里只演示book服务
添加bootstrap.yml文件
spring:cloud:config:# 名称,其实就是文件名称name: book-service# 配置服务器的地址uri: http://localhost:8700# 环境profile: dev# 分支label: master
在bookcontroller打印一下配置文件的内容并添加注
解
启动三个服务和config服务,然后访问test接口,可以看到配置的仓库文件
book-service-dev.yml
中spring: application:name
的值。
然后在仓库中修改
spring: application:name
的值
消息队列也有消息变动
再次访问文件的内容发现有改变,这是消息在起作用。