微服务消息总线Bus结合消息队列RabbitMQ实战
1、消息总线Bus介绍和使用场景
简介:讲解消息总线Bus介绍和使用场景
1、什么是消息
一个事件,需要广播或者单独传递给某个接口
2、为什么使用这个
配置更新了,但是其他系统不知道是否更新
2、消息队列和RabbitMQ基础介绍
简介:消息队列和RabbitMQ基础介绍
1、消息队列介绍
参考:https://www.cnblogs.com/linjiqin/p/5720865.html
2、同类产品
ActiveMQ
RocketMQ
Kafka
等
3、SpringCloud默认推荐使用RabbitMQ
4、RabbitMQ介绍
官方文档:http://www.rabbitmq.com/getstarted.html
中文文档:http://rabbitmq.mr-ping.com/
3、实战系列使用Docker搭建RabbitMQ3.7
简介:使用Docker安装RabbitMQ
1、如果对Docker没基础,课程后续有讲解Docker,可以先跳转过去学习Docker
2、安装步骤
1)拉取镜像:docker pull rabbitmq:management
2)查看当前镜像列表:docker images
3)删除指定镜像:docker rmi IMAGE_ID (如果需要强制删除加 -f)
4)创建容器
docker run -d --name="myrabbitmq" -p 5671:5671 -p 15672:15672 rabbitmq:management
参数讲解:
run: 创建一个新的容器并运行一个命令
-d: 后台运行容器,并返回容器ID
-p: 端口映射,格式为:主机(宿主)端口:容器端口
--name="rabbitmq": 为容器指定一个名称
3、RabbitMQ默认创建了一个 guest 用户,密码也是 guest, 如果访问不了记得查看防火墙,端口或者云服务器的安全组
管理后台:http://127.0.0.1:15672
其他安装方式:
Linux安装:https://blog.csdn.net/qq_34021712/article/details/72567786
windows安装:http://www.rabbitmq.com/install-windows.html
https://blog.csdn.net/liyuejin/article/details/78410586
4、高级篇幅消息总线整合配置中心架构流程图
简介:讲解消息总线Bus结合config组件搭建配置中心项目架构图和操作流程
启动
rabbitmq: docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management
rabbitmq默认是5672,所以改为5672端口
1、config-client加入依赖
<!--配置中心结合消息队列-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
官方文档:http://cloud.spring.io/spring-cloud-bus/single/spring-cloud-bus.html#_bus_refresh_endpoint
文档里面 暴露端点 management.endpoints.web.exposure.include=bus-refresh
2、在配置文件中增加关于RabbitMQ的连接(如果是本机,则可以直接启动,采用默认连接配置)
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
#暴露全部的监控信息
management:
endpoints:
web:
exposure:
include: "*"
3、需要刷新配置的地方,增加注解
@RefreshScope
4、访问验证 post方式:
http://localhost:8773/actuator/bus-refresh
5、动态刷新配置: 在开发和测试环境使用,尽量少在生产环境使用
5、微服务相关项目改造配置中心
简介:把课程项目改造成配置中心讲解
1、git里面新增对应项目的配置文件,都要添加下面的配置
#服务的名称
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
#暴露全部的监控信息
management:
endpoints:
web:
exposure:
include: "*"
2、项目里面添加maven依赖
<!--配置中心客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<!--config server-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
3、修改application.properties为bootstrap.yml 并拷贝配置文件
#指定注册中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
#服务的名称
spring:
application:
name: order-service
#指定从哪个配置中心读取
cloud:
config:
discovery:
service-id: CONFIG-SERVER
enabled: true
profile: test
4、各个项目启动顺序
1)注册中心
2)配置中心
3)对应的服务:商品服务、订单服务。。。
4)启动网关