当前位置:网站首页>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
边栏推荐
- 偏执的非合格公司
- from . onnxruntime_ pybind11_ State Import * noqa ddddocr operation error
- Install mongodb database
- Maze games based on JS
- How can clothing stores make profits?
- JWT的基础介绍
- Abnova 膜蛋白脂蛋白体技术及类别展示
- 数据资产管理与数据安全国内外最新趋势
- 请问 flinksql对接cdc时 如何实现计算某个字段update前后的差异 ?
- What books can greatly improve programming ideas and abilities?
猜你喜欢

Pinduoduo lost the lawsuit: "bargain for free" infringed the right to know but did not constitute fraud, and was sentenced to pay 400 yuan

Etcd database source code analysis -- starting from the start function of raftnode

RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`问题解决

The latest trends of data asset management and data security at home and abroad
![[noi simulation] regional division (conclusion, structure)](/img/7d/4c66cd0a30e52ccd167b6138fcb4df.png)
[noi simulation] regional division (conclusion, structure)

Leetcode T1165: 日志分析

毕业设计游戏商城

Matlab tips (30) nonlinear fitting lsqcurefit

ANR 原理及实践

LVS+Keepalived(DR模式)学习笔记
随机推荐
LM11丨重构K线构建择时交易策略
linux系统rpm方式安装的mysql启动失败
工具类:对象转map 驼峰转下划线 下划线转驼峰
MySQL user permissions
Take you to brush (niuke.com) C language hundred questions (the first day)
Stack and queue-p78-8 [2011 unified examination true question]
Comment les entreprises gèrent - elles les données? Partager les leçons tirées des quatre aspects de la gouvernance des données
大咖云集|NextArch基金会云开发Meetup来啦
品牌·咨询标准化
JESD204B时钟网络
MySQL SQL的完整处理流程
ip地址那点事
JWT的基础介绍
品牌电商如何逆势增长?在这里预见未来!
Unable to debug screen program with serial port
Bus消息总线
How to do sports training in venues?
jdbc数据库连接池使用问题
二十岁的我4面拿到字节跳动offer,至今不敢相信
「运维有小邓」符合GDPR的合规要求