接上文 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.119
username: admin
password: password
virtual-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-server
cloud:
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
的值
消息队列也有消息变动
再次访问文件的内容发现有改变,这是消息在起作用。