Servidor de mensajes de la aplicación del proyecto Spring Boot RabbitMQ (breve introducción)

1. Antecedentes

Este capítulo describe la aplicación del servidor de mensajes RabbitMQ cuando el usuario realiza un pedido

1.1 Aplicación del servidor de mensajes

Estoy escribiendo una pequeña demostración de un proyecto de comercio electrónico. En el proyecto de comercio electrónico, la aplicación del servidor de mensajes:

1. Notificación del estado del pedido: cuando el usuario realiza un pedido, el pago se realiza correctamente, el pedido se envía, el pedido se completa y otros nodos clave, la notificación de estado del pedido correspondiente se puede enviar al usuario a través del servidor de mensajes.

2. Envío de mensajes: a través del servidor de mensajes, se pueden enviar a los usuarios productos recomendados personalizados, actividades promocionales y otros mensajes para aumentar la participación de los usuarios y la tasa de compra.

3. Procesamiento asincrónico: en algunos escenarios que involucran operaciones que consumen mucho tiempo, como la deducción de inventario, el seguimiento de logística, etc., la tarea se puede transferir al servidor de mensajes para el procesamiento asincrónico para mejorar la concurrencia y la velocidad de respuesta del sistema.

4. Chat en tiempo real: si su sistema de comercio electrónico admite el servicio al cliente en línea o la comunicación en tiempo real entre usuarios, el servidor de mensajes se puede usar para implementar la mensajería instantánea.

5. Cola de mensajes: el servidor de mensajes también puede servir como portador de la cola de mensajes para realizar el desacoplamiento y la comunicación asíncrona entre los diferentes módulos del sistema.

La elección del servidor de mensajes puede considerar el uso de middleware de cola de mensajes de código abierto, como RabbitMQ, Apache Kafka, ActiveMQ, etc., o servicios de cola de mensajes proporcionados por proveedores de servicios en la nube, como la cola de mensajes de Alibaba Cloud RocketMQ, la cola de mensajes de Tencent Cloud CMQ, etc.

Cabe señalar que cuando utilice un servidor de mensajes, garantice la seguridad y confiabilidad de los datos, y diseñe razonablemente el formato y el método de transmisión del mensaje para garantizar el funcionamiento normal del sistema y la experiencia del usuario.

1.2 En el enlace de realizar un pedido, el escenario de aplicación del servidor de mensajes

Cuando un usuario realiza un pedido, el servidor de mensajes de la aplicación tiene los siguientes escenarios de aplicación comunes:

1. Procesamiento asíncrono de pedidos: después de que el usuario realiza un pedido, la información del pedido se puede enviar al servidor de mensajes, que será procesada de forma asíncrona por el servidor de mensajes. Esto puede reducir el tiempo de espera del usuario y mejorar la concurrencia del sistema. El servidor de mensajes puede ser responsable de procesar varias lógicas comerciales de la orden, como la deducción de inventario, la generación del número de orden de logística y otras operaciones.

2. Notificación del estado del pedido: después de que el usuario realiza un pedido, el servidor de notificaciones puede enviar la notificación del estado del pedido al usuario, como que el pedido se envió, el pago se realizó correctamente, el pedido se envió y el pedido se realizó. terminado. El servidor de mensajes puede enviar notificaciones a los usuarios en tiempo real para brindar una buena experiencia de usuario.

3. Seguimiento del estado del pedido: en todo el ciclo de vida del pedido, el servidor de mensajes puede registrar y realizar un seguimiento de los cambios de estado del pedido. Cuando el usuario consulta el estado del pedido, se puede obtener la información más reciente del estado del pedido a través del servidor de mensajes para garantizar la precisión y el rendimiento en tiempo real del estado del pedido.

4. Cola de mensajes: el servidor de mensajes se puede utilizar como un componente de la cola de mensajes para poner en cola mensajes relacionados con pedidos. De esta forma, se pueden desacoplar las dependencias entre el módulo de pedidos y otros módulos, y se puede mejorar la estabilidad y escalabilidad del sistema.

2. Descarga e instalación de RabbitMQ

2.1 La dirección del sitio web oficial de RabbitMQ:

La dirección del sitio web oficial de RabbitMQ:

RabbitMQ: transmisión y mensajería flexibles y fáciles de usar — ​​RabbitMQ

2.2 Instalar usando cerveza

1. Instalación

brew install rabbitmq

Resultado de la instalación:

 La ruta de instalación de rabbitmq:

/opt/homebrew/opt/rabbitmq

2. Configurar variables de entorno

vi ~/.bash_profile
export RABBIT_HOME=${PATH}:/opt/homebrew/opt/rabbitmq
export PATH=${PATH}:$RABBIT_HOME/sbin
source ~/.bash_profile


2.3 Iniciar RabbitMQ


1. Ejecute
el servidor rabbitmq en primer plano

2. Ejecute
rabbitmq-server-tached en segundo plano

3. Ver el estado de ejecución
del estado de rabbitmqctl

4. Inicie el complemento web
rabbitmq-plugins enable rabbitmq_management

5. Reinicie
el reinicio del servidor rabbitmq

5. Cerrar
la parada de rabbitmqctl

2.4 Acceso MQ


1. La dirección del navegador
http://localhost:15672/
El nombre de usuario y la contraseña predeterminados son invitados

Agregar usuario
rabbitmqctl add_user miaojiang 123

Establecer el usuario como administrador
rabbitmqctl set_user_tags miaojiang administrador

Configure los usuarios para iniciar sesión de forma remota en
rabbitmqctl set_permissions -p "/" miaojaing ".*" ".*" ".*"

Ver cuentas recién agregadas

conejomqctl lista_usuarios

Ver los permisos usados
​​rabbitmqctl list_permissions -p/

3. Aplicación del proyecto Spring Boot RabbitMQ

3.1 Agregar dependencias de Maven:

Agregue la dependencia de la biblioteca del cliente RabbitMQ al archivo pom.xml de su proyecto

<!--AMQP依赖,包含RabbitMQ-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

3.2 Configurar la conexión RabbitMQ:

Agregue información de conexión de RabbitMQ en el archivo de configuración de Spring Boot (application.properties o application.yml).

aplicaciones.propiedades:

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

 

Configure los parámetros de mq en application.yml:

spring:
  rabbitmq:
    #设置RabbitMQ的IP地址
    host: localhost
    #设置rabbitmq服务器用户名
    username: guest
    #设置rabbitmq服务器密码
    password: guest
    #设置rabbitmq服务器连接端口
    port: 5672

3.3 Crear un interruptor

nombre de interruptor personalizado

Crea un intercambio llamado "myExchange"

package com.example.usermanagement.mq;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {
    /*
    使用 @Configuration 注解创建一个配置类,并通过 @Bean 注解创建了一个名为 declareExchange 的方法,用于声明创建交换机。请根据实际情况修改交换机名称、类型和持久化设置。
     */

    public static final String EXCHANGE_NAME = "myExchange";

    @Bean
    public Exchange declareExchange() {
        return ExchangeBuilder.directExchange(EXCHANGE_NAME)
                .durable(true)
                .build();
    }
}

3.4 Crear un remitente de mensajes

Crear un remitente de mensajes: cree una clase de remitente de mensajes para enviar mensajes a RabbitMQ

package com.example.usermanagement.mq;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessageSender{

    private final AmqpTemplate amqpTemplate;
    private final String exchangeName = "myExchange"; // 自定义交换机名称

    @Autowired
    public MessageSender(AmqpTemplate amqpTemplate) {
        this.amqpTemplate = amqpTemplate;
    }

    public void sendMessage(Object message) {
        amqpTemplate.convertAndSend(exchangeName, "", message); // 发送消息到默认交换机和空路由键
    }
}

Aviso:

 El tipo sendMessage usa el tipo Object

3.5 Fondo de administración de RabbitMQ para agregar columnas

paso:

  1. Abra un navegador e ingrese la URL del fondo de administración de RabbitMQ. De forma predeterminada, la URL es http://localhost:15672/. Asegúrese de que su servidor RabbitMQ esté funcionando y en el número de puerto correcto.

  2. Ingrese el nombre de usuario y la contraseña para iniciar sesión en el fondo de administración de RabbitMQ. De forma predeterminada, el nombre de usuario es guest, y la contraseña también es guest. Si ha cambiado su nombre de usuario y contraseña, inicie sesión con sus credenciales personalizadas.

  3. Después de iniciar sesión con éxito, verá la interfaz principal del fondo de administración de RabbitMQ. En la barra de navegación superior, elija QueuesPestañas.

  4. En Queuesla página, verá una lista de las colas existentes. Si desea crear una nueva cola, haga clic en Add a new queueel botón.

  5. En la página para agregar una cola, complete la siguiente información:

    • Name: El nombre de la cola. Proporcione un nombre único para la cola. (como mi cola)
    • Durability: Persistencia de la cola. Seleccione Sí o No para especificar si la cola debe persistir en los reinicios del servicio RabbitMQ.
    • Auto delete: Eliminación automática de la cola. Seleccione Sí o No para especificar si se eliminará la cola cuando se desconecte el último consumidor.
    • Arguments: Parámetros adicionales para la cola. Esto es opcional, puede establecer algunos parámetros específicos para la cola.
  6. Después de completar la información de la cola, haga clic en Add queueel botón para crear la cola.

  7. Después de que la creación sea exitosa, verá Queuesla cola recién agregada en la página. Puede ver los detalles de la cola en esta página, incluida la cantidad de mensajes, la cantidad de consumidores, etc.

http://localhost:15672/#/colas

Simplemente agregue el nombre de la cola 

 

3.6 Llamar al productor

1. MessageSenderInstancia de inyección

@Autowired
private MessageSender messageSender;

2. Llame al método donde se debe enviar el mensaje messageSender.sendMessage. De acuerdo con su lógica comercial, puede llamar a este método en una ubicación adecuada. Por ejemplo, después de que el pedido se haya creado correctamente, puede agregar el siguiente código:

messageSender.sendMessage("订单已创建:" + order.getOrderId());

3.7 Crear un receptor de mensajes

Crear un receptor de mensajes: cree una clase de receptor de mensajes para procesar los mensajes RabbitMQ recibidos.

Aquí escribimos directamente la lógica para procesar mensajes RabbitMQ.

package com.example.usermanagement.mq;

import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class MessageReceiver {

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue("your_queue_name"),
            exchange = @Exchange(value = RabbitMQConfig.EXCHANGE_NAME)
//            key = "your_routing_key"
    ))
    public void receiveMessage(Object message) {
        System.out.println("Received message: " + message);
        // 处理消息逻辑
    }
}

Aviso:

 El tipo sendMessage usa el tipo Object

your_queue_nameReemplace con el nombre de la cola que desea escuchar (como myQueue)

Reemplace your_routing_keycon la clave de enrutamiento adecuada (si se usa)

 

Supongo que te gusta

Origin blog.csdn.net/qq_39208536/article/details/132189312
Recomendado
Clasificación