Dos líneas de código implementan la cola de mensajes de Redis, simple y fácil de usar

El tipo de datos de la lista de Redis es muy adecuado para su uso como cola de mensajes. Inserte mensajes nuevos al final de la lista y luego elimine los mensajes del encabezado de la lista para procesarlos. Esta solución es simple y fácil de usar y permite que varios consumidores procesen mensajes en paralelo.

La cola de mensajes se puede implementar con dos líneas de código central, de la siguiente manera:

// 推送消息
redisTemplate.opsForList().leftPush(queueName, message);
// 接收消息
redisTemplate.opsForList().rightPop(queueName);

Para implementar una cola de mensajes, los pasos específicos son los siguientes:

Configurar la información de conexión de Redis

En una aplicación Spring Boot, puede usar archivos application.properties o application.yml para configurar la información de conexión de Redis. Una configuración de ejemplo es la siguiente:

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=yourpassword

Crear bean RedisTemplate

Cree un bean RedisTemplate para realizar operaciones de Redis en el código posterior. El código de muestra es el siguiente:

@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory connectionFactory) {
    RedisTemplate<String, String> template = new RedisTemplate<>();
    template.setConnectionFactory(connectionFactory);
    template.setKeySerializer(new StringRedisSerializer());
    template.setValueSerializer(new StringRedisSerializer());
    return template;
}

Implementar lógica de cola de mensajes

Utilice el método opsForList() de RedisTemplate para obtener el objeto ListOperations, luego utilice el método leftPush() para insertar el mensaje en el encabezado de la lista y utilice el método rightPop() para eliminar el mensaje del final de la lista. Procesando. El código de muestra es el siguiente:

@Autowired
private RedisTemplate<String, String> redisTemplate;

public void sendMessage(String queueName, String message) {
    redisTemplate.opsForList().leftPush(queueName, message);
}

public String receiveMessage(String queueName) {
    return redisTemplate.opsForList().rightPop(queueName);
}

Escriba un ejemplo de uso de la cola de mensajes

Los ejemplos son los siguientes:

@RestController
public class MessageController {

    @Autowired
    private RedisMessageQueue redisMessageQueue;

    @RequestMapping("/send")
    public String sendMessage(@RequestParam(value = "message") String message) {
        String queueName = "message-queue";
        redisMessageQueue.sendMessage(queueName, message);
        return "Message sent: " + message;
    }

    @RequestMapping("/receive")
    public String receiveMessage() {
        String queueName = "message-queue";
        String message = redisMessageQueue.receiveMessage(queueName);
        return "Message received: " + message;
    }
}

Mensaje de prueba enviado:

curl http://localhost:8080/send?message=hello

Recepción de mensajes de prueba:

curl http://localhost:8080/receive
// 返回 Message received: hello

Defectos de la cola de mensajes de Redis

La cola de mensajes de Redis es una cola de mensajes liviana implementada en base a Redis, que tiene las ventajas de eficiencia, confiabilidad, flexibilidad, etc., pero también tiene las siguientes desventajas:

  1. Problemas de disponibilidad: cuando el nodo de Redis deja de funcionar o la red falla, es posible que se pierdan mensajes. Para evitar esta situación, se debe utilizar la replicación maestro-esclavo o el modo de clúster para mejorar la disponibilidad.
  2. Problema con la longitud de la cola: dado que Redis es una base de datos en memoria, debe prestar atención al impacto de la longitud de la cola en los recursos del sistema al procesar una gran cantidad de mensajes. Si la longitud de la cola es demasiado larga, puede provocar que el nodo Redis falle o ralentice la eficiencia de la ejecución.
  3. Problema de persistencia de mensajes: de forma predeterminada, la cola de mensajes de Redis no admite la persistencia de mensajes. Si necesita implementar la persistencia de mensajes, debe escribir manualmente el mensaje en el disco o usar archivos Redis RDB y AOF para operaciones de persistencia.
  4. Problema con el orden de los mensajes: la cola de mensajes de Redis no garantiza el orden de los mensajes. Si necesita garantizar el orden de los mensajes, debe configurar varias colas o utilizar otros métodos para lograrlo.

Ampliación de contenido relacionado: (Frontera Tecnológica)

En los últimos 10 años, cuando incluso las empresas tradicionales comenzaron a digitalizarse a gran escala, descubrimos que en el proceso de desarrollo de herramientas internas se repetían constantemente una gran cantidad de páginas, escenas, componentes, etc. la rueda hizo perder mucho tiempo a los ingenieros.

Para abordar este tipo de problema, el código bajo concreta ciertas escenas y procesos recurrentes en componentes, API e interfaces de bases de datos para evitar reinventar la rueda. Mejora enormemente la productividad de los programadores.

Recomiende una plataforma de desarrollo rápido de software JNPF que todos los programadores deberían conocer. Adopta la arquitectura de microservicio SpringBoot líder en la industria y admite el modo SpringCloud, lo que mejora la base de expansión de la plataforma y satisface las necesidades de desarrollo rápido del sistema, expansión flexible, integración perfecta y alta final Capacidades integrales, como aplicaciones de rendimiento; utilizando el modelo de separación de front-end y back-end, los desarrolladores de front-end y back-end pueden trabajar juntos para hacerse cargo de diferentes sectores, lo cual es conveniente y sin problemas.

Experimente el sitio web oficial: https://www.jnpfsoft.com/?csdn

Si aún no ha aprendido sobre la tecnología de código bajo, ¡puede experimentarla y aprenderla rápidamente!

Supongo que te gusta

Origin blog.csdn.net/Z__7Gk/article/details/132833659
Recomendado
Clasificación