Spring Boot基于Redis实现高效的消息通信

文摘   2024-11-10 10:02   新疆  

最新实战案例锦集:《Spring Boot3实战案例合集》持续更新,每天至少更新一篇文章,订阅后将赠送文章最后展示的所有MD文档(学习笔记)。

环境:SpringBoot3.2.5



1. 简介

Redis实现消息发布/订阅是一种高效的消息通信机制。在这种机制中,发布者(Publisher)负责向一个或多个订阅者(Subscriber)发送消息,而订阅者则通过订阅特定的频道(Channel)来接收消息。Redis的发布订阅模式支持多组生产者、消费者处理消息,为实时消息传递、系统组件解耦、分布式系统通信和事件驱动架构等提供了有力支持。

在Spring Boot中,我们可以通过配置Redis连接工厂、消息监听器容器和消息监听器等组件来实现发布订阅功能。其中,RedisTemplate或StringRedisTemplate可用于发布消息,而MessageListener则用于处理接收到的消息。

Redis的消息发布/订阅优缺点:

优点
  1. 轻量级:Redis 的消息订阅发布功能非常轻量,适合简单的消息传递场景。

  2. 实时性:Redis 的消息传递几乎是实时的,延迟非常低。

  3. 简单易用:API 简单,容易上手,适合快速开发和原型设计。

  4. 内存存储:数据存储在内存中,读写速度快。

缺点
  1. 持久化能力差:Redis 的消息订阅发布功能不支持消息的持久化,一旦消息被消费或Redis重启,消息就会丢失。

  2. 可靠性低:缺乏消息确认机制,无法保证消息一定被消费。

  3. 功能有限:相比RabbitMQ,Redis的消息订阅发布功能较为简单,不支持复杂的路由和消息队列管理。

  4. 扩展性有限:不适合大规模、高并发的消息传递场景。

     

接下来,我们将从以下几个方面来详细的介绍基于Redis的消息发布/订阅在Spring Boot中的应用:

  1. 快速入门

    以简单的示例帮助你快速了解在Spring Boot环境下Redis消息发布/订阅的使用。

  2. 高级主题

  • 模式主题

    根据模式可以监听多个通道的消息。

  • 消息处理器(自定义序列化器)

    消息处理监听程序所支持的各种签名方法。

  • 自定义异步线程池

    通过配置自定义的线程池控制消息监听处理的线程。

  • 虚拟线程支持

    消息的处理通过虚拟线程性能更加的高效。

  • 消息异常处理

    当我们的消息处理程序发生异常后,可以通过自定义异常处理句柄进行统一异常信息进行处理。 

     

2. 实战案例

2.1 准备环境

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-redis</artifactId></dependency>

在 Spring Boot 环境下引入该starter非常方便的使用redis。通常情况下, 我们一般都会直接通过使用 StringRedisTemplate 操作。

配置Redis

spring:  data:    redis:      host: localhost      port: 6379      password: 123123      database: 13      connect-timeout: 10000      timeout: 10000

注意:如果你使用的是低版本那么配置的redis应该是spring.redis.xxx。

2.2 快速入门

首先,我们要创建消息接收处理程序

@Componentpublic class MessageReceiver {
private final Logger logger = LoggerFactory.getLogger(getClass()) ;
public void receiveMessage(String message) { logger.info("接收到消息: {}", message) ; }}

在任何基于消息的应用程序中,都有消息发布者和消息接收者。

Spring全家桶实战案例源码
spring, springboot, springcloud 案例开发详解
 最新文章