Uso de Spring Cloud para realizar el desarrollo distribuido de Java [parte 7]: Introducción y uso del bus de mensajes Spring Cloud Bus

Introducción a SpringCloud

Spring Cloud es uno de los proyectos de
Spring . Spring Cloud no es un componente sino una colección de muchos componentes.
Integra algunas de las tecnologías más populares para lograr múltiples funciones importantes en el desarrollo distribuido y
coordinar cada uno de los entornos distribuidos. Sistema y configuración de plantilla para varios servicios

Los principales componentes involucrados incluyen:

  • Eureka : Centro de registro
  • Zuul o Spring Cloud Gateway : puerta de enlace de servicios
  • Cinta : equilibrio de carga
  • Fingir : llamada de servicio
  • Hystrix o Resilience4j: Fusible

Además, hay algunos componentes útiles como Spring Cloud Config y Spring Cloud Bus

[En este artículo, se presentará el bus de mensajes Spring Cloud Bus]

Bus de mensajes de Spring Cloud Bus

Si modifica la configuración de Spring Cloud Config sin reiniciar el servicio, no podrá leer los últimos elementos de configuración modificados.
Spring Cloud Bus puede sincronizar y actualizar los elementos de configuración a tiempo sin reiniciar el sistema.

Spring Cloud Bus utiliza un agente de mensajes liviano para conectar nodos distribuidos y se puede usar para transmitir cambios de archivos de configuración o administración de monitoreo de servicios,
es decir, el bus de mensajes puede monitorear microservicios y también puede realizar comunicación mutua entre aplicaciones

Los agentes de mensajes opcionales de Spring Cloud Bus son RabbitMQ y Kafka

Pasos de uso

La capa inferior de Spring Cloud Bus se basa en RabbitMQ y utiliza el servicio de cola de mensajes local de forma predeterminada. Por lo tanto, debe instalar RabbitMQ con anticipación y luego iniciar el servicio local de RabbitMQ.

Para el tutorial de instalación, consulte mi otro blog: Demostración práctica de la instalación de RabbitMQ en un entorno Windows

1. Primero configure en [Proyecto del Centro de configuración]:

Agregue las dependencias relacionadas en el archivo pom del proyecto del centro de configuración:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>

Luego realice la configuración relevante:

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        # 指定git仓库的地址
        git:
          uri: https://gitee.com/zhangsan/spring-cloud-config.git
          username: zhangsan
          password: 123456789
  # RabbitMQ配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    
management:
  endpoints:
    web:
      exposure:
        # 暴露触发消息总线的地址
        # 访问该地址即可立即刷新配置文件
        include: bus-refresh

2. [Proyecto de prestación de servicios] también debe configurarse en consecuencia

(El proyecto de prestación de servicios es el proyecto que aloja el archivo de configuración en git)

También es necesario agregar dependencias relacionadas:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

El archivo de configuración también debe modificarse:

spring:
  cloud:
    config:
      name: user
      profile: dev
      label: master
      discovery:
        enabled: true
        service-id: config-server
  # RabbitMQ配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

Agregue @RefreshScopeanotaciones a la clase del controlador para actualizar la configuración cuando haya el último elemento de configuración:

@RestController
@RequestMapping("/user")
// 当有最新的配置项时 刷新配置
@RefreshScope
public class UserController {
    
    

    @Autowired
    private UserService userService;

    @Value("${test.name}")
    private String name;

    @GetMapping("/{id}")
    public User queryById(@PathVariable Long id)
    {
    
    
        System.out.println("name : "+name);
        return userService.queryById(id);
    }
}

Prueba:
después de modificar el archivo de configuración en git, envíe una solicitud de publicación a localhost: 12000 / actuator / bus-refresh
(el puerto 12000 es el puerto de mi proyecto del centro de configuración, bus-refresh es el nombre de ruta establecido y se puede modificar en el archivo de configuración )
Inserte la descripción de la imagen aquí
En este momento, los datos más recientes del archivo de configuración se muestran en el proyecto.

probando exitosamente


Supongo que te gusta

Origin blog.csdn.net/Piconjo/article/details/108783344
Recomendado
Clasificación