当前位置:网站首页>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
边栏推荐
- How can I check the DOI number of a foreign document?
- 【NOI模拟赛】区域划分(结论,构造)
- Unity C# 函数笔记
- 隐马尔科夫模型(HMM)学习笔记
- Prime partner of Huawei machine test questions
- Brand · consultation standardization
- 偏执的非合格公司
- SVN version management in use replacement release and connection reset
- 肿瘤免疫治疗研究丨ProSci LAG3抗体解决方案
- 途家、木鸟、美团……民宿暑期战事将起
猜你喜欢

Tkinter window selects PCD file and displays point cloud (open3d)

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

How to install swoole under window
![Stack and queue-p79-10 [2014 unified examination real question]](/img/7f/e5bba2f64bb77e1781076361c32f01.jpg)
Stack and queue-p79-10 [2014 unified examination real question]

This article introduces you to the characteristics, purposes and basic function examples of static routing

dolphinscheduler3. X local startup

化工园区危化品企业安全风险智能化管控平台建设四大目标

Learning notes | data Xiaobai uses dataease to make a large data screen

网络基础 —— 报头、封装和解包

一文带你了解静态路由的特点、目的及配置基本功能示例
随机推荐
Abnova 体外转录 mRNA工作流程和加帽方法介绍
What books can greatly improve programming ideas and abilities?
Problems and precautions about using data pumps (expdp, impdp) to export and import large capacity tables in Oracle migration
Performance comparison between Ceres solver and g2o
当前发布的SKU(销售规格)信息中包含疑似与宝贝无关的字
一文带你了解静态路由的特点、目的及配置基本功能示例
分布式id解决方案
7天零基础能考证HCIA吗?华为认证系统学习路线分享
impdp的transform参数的测试
JWT certification
Matlab tips (29) polynomial fitting plotfit
ViewModelProvider.of 过时方法解决
sqlserver多线程查询问题
MOS管参数μCox得到的一种方法
Google Chrome browser released patch 103.0.5060.114 to fix the 0-day vulnerability
Linear algebra (1)
快速定量,Abbkine 蛋白质定量试剂盒BCA法来了!
SolidWorks的GB库(钢型材库,包括铝型材、铝管等结构)安装及使用教程(生成铝型材为例)
2022/07/04学习记录
偏执的非合格公司