当前位置:网站首页>Bus message bus
Bus message bus
2022-07-07 06:57:00 【RB_ VER】
summary
Spring Cloud Bus coordination spring cloud config Use dynamic refresh that enables configuration .
spring cloud bus It's a framework for linking nodes of a distributed system to a lightweight messaging system .
It integrated. Java Event handling mechanism and message middleware function .
Bus Two kinds of message agents are supported :RabbitMQ and Kafka.
spring cloud bus It can manage and disseminate messages between distributed systems , It's like a distributed actuator , Can be used for broadcast state change , Event push, etc , It can also be used as a communication channel between microservices .
Bus : In the system of microservice Architecture , A lightweight message broker is usually used to build a common message topic , And connect all micro service instances in the system . Because messages generated in this topic will be listened and consumed by all instances , So it is called message bus . Each instance on the bus , Can easily broadcast some messages that need to be known to other instances connected to the subject .
The basic principle :config client Instances are listening to MQ The same one topic( The default is SpringCloudBus). When a service refreshes data , It will put this information into topic in , In this way, the other monitors the same topic The service will be informed , Then update your configuration .
spring cloud bus Dynamic refresh global broadcast
design idea :
Use the message bus to trigger a client /bus/refresh, And refresh the location of all clients

Use message bus to trigger a server ConfigServer Of /bus/refresh Endpoint , And refresh the configuration of all clients .


The second architecture is more reasonable , The first unreasonable reason :
- Breaking the single responsibility of microservices , Because microservices themselves are business modules , It should not be responsible for configuration refresh .
- Destroy the peer-to-peer of each microservice node .
- There are certain limitations .
establish cloud-config-center-3344 The module serves as the server of the configuration center .
Please refer to 【 Microservices 】 Integrate spring cloud config.
pom.xml
<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>
<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>
...
application.yml
server:
port: 3344
spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
uri: [email protected]:zzyybs/springcloud-config.git
search-paths:
- springcloud-config
label: master
rabbit:
host: localhost
port: 5672
username: guest
password: guest
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
management:
endpoints:
web:
exposure:
include: 'bus-refresh'
Configuration required rabbitmq.
newly build cloud-config-client-3366 modular .
pom.xml rely on
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
bootstrap.yml
server:
port: 3366
spring:
application:
name: config-client
cloud:
config:
label: master # Branch name
name: config # Profile name
profile: dev # Read suffix name The above three comprehensive :master On the branch config-dev.yml Configuration file for
uri: http://localhost:3344 # Configure center address
rabbit:
host: localhost
port: 5672
username: guest
password: guest
eureka:
client:
service-url:
defautZone: http://localhost:7001/eureka
management: # Monitor exposure endpoints
endpoints:
web:
exposure:
include: "*"
ConfigClientMain3366
@EnableEurekaClient
@SpringBootApplication
public class ConfigClientMain3366{
public static void main(String[] args) {
SpringApplication.run(ConfigClientMain3366.class,args);
}
}
@RestController
@RefreshScope
public class ConfigClientController{
@Value("${server.port}")
private String serverPort;
@Value("${config.info}")
private String configInfo;
@GetMapping("/configinfo")
public String configInfo() {
return "serverPort: "+serverPort+" configInfo: "+configInfo;
}
}
In the same way cloud-config-client-3355 modular .
test :
modify GitHub Add version number to the configuration file :
config:
info: "master branch,springcloud-config/config-dev.yml version=2"
send out post request :
curl -X POST "http://localhost:3344/actuator/bus-refresh"
visit http://localhost:3366/configinfo, Get configuration information , The discovery has been refreshed .
spring cloud bus Dynamic refresh fixed-point notification
It means that a specific instance takes effect instead of all .
http://localhost: Port number of the configuration center /actuator/bus-refresh/{destination}
destination= Microservice name : Port number
边栏推荐
- 精准时空行程流调系统—基于UWB超高精度定位系统
- 化工园区危化品企业安全风险智能化管控平台建设四大目标
- 根据IP获取地市
- Install mongodb database
- MySQL的主从复制原理
- This article introduces you to the characteristics, purposes and basic function examples of static routing
- 网络基础 —— 报头、封装和解包
- Prime partner of Huawei machine test questions
- dolphinscheduler3. X local startup
- 毕业设计游戏商城
猜你喜欢
SVN version management in use replacement release and connection reset

How can I check the DOI number of a foreign document?

2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书第一阶段答案

【从零开始】win10系统部署Yolov5详细过程(CPU,无GPU)

大咖云集|NextArch基金会云开发Meetup来啦

JDBC database connection pool usage problem

MATLAB小技巧(29)多项式拟合 plotfit

企業如何進行數據治理?分享數據治理4個方面的經驗總結

2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书第二阶段答案

MOS管参数μCox得到的一种方法
随机推荐
Installing redis and windows extension method under win system
网络基础 —— 报头、封装和解包
什么情况下考虑分库分表
oracle如何备份索引
Matlab tips (29) polynomial fitting plotfit
JWT的基础介绍
「运维有小邓」符合GDPR的合规要求
Unable to debug screen program with serial port
Kotlin之 Databinding 异常
.net 5 FluentFTP连接FTP失败问题:This operation is only allowed using a successfully authenticated context
LM11丨重构K线构建择时交易策略
偏执的非合格公司
How to find the literature of a foreign language journal?
二十岁的我4面拿到字节跳动offer,至今不敢相信
MySQL SQL的完整处理流程
Tkinter window selects PCD file and displays point cloud (open3d)
2022年全国所有A级景区数据(13604条)
Postgresql源码(59)分析事务ID分配、溢出判断方法
2022/07/04学习记录
毕业设计游戏商城