最新实战案例锦集:《Spring Boot3实战案例合集》持续更新,每天至少更新一篇文章,订阅后将赠送文章最后展示的所有MD文档(学习笔记)。
环境:SpringBoot3.2.5
1. 简介
Redis实现消息发布/订阅是一种高效的消息通信机制。在这种机制中,发布者(Publisher)负责向一个或多个订阅者(Subscriber)发送消息,而订阅者则通过订阅特定的频道(Channel)来接收消息。Redis的发布订阅模式支持多组生产者、消费者处理消息,为实时消息传递、系统组件解耦、分布式系统通信和事件驱动架构等提供了有力支持。
在Spring Boot中,我们可以通过配置Redis连接工厂、消息监听器容器和消息监听器等组件来实现发布订阅功能。其中,RedisTemplate或StringRedisTemplate可用于发布消息,而MessageListener则用于处理接收到的消息。
Redis的消息发布/订阅优缺点:
优点
轻量级:Redis 的消息订阅发布功能非常轻量,适合简单的消息传递场景。
实时性:Redis 的消息传递几乎是实时的,延迟非常低。
简单易用:API 简单,容易上手,适合快速开发和原型设计。
内存存储:数据存储在内存中,读写速度快。
缺点
持久化能力差:Redis 的消息订阅发布功能不支持消息的持久化,一旦消息被消费或Redis重启,消息就会丢失。
可靠性低:缺乏消息确认机制,无法保证消息一定被消费。
功能有限:相比RabbitMQ,Redis的消息订阅发布功能较为简单,不支持复杂的路由和消息队列管理。
扩展性有限:不适合大规模、高并发的消息传递场景。
接下来,我们将从以下几个方面来详细的介绍基于Redis的消息发布/订阅在Spring Boot中的应用:
快速入门
以简单的示例帮助你快速了解在Spring Boot环境下Redis消息发布/订阅的使用。
高级主题
模式主题
根据模式可以监听多个通道的消息。
消息处理器(自定义序列化器)
消息处理监听程序所支持的各种签名方法。
自定义异步线程池
通过配置自定义的线程池控制消息监听处理的线程。
虚拟线程支持
消息的处理通过虚拟线程性能更加的高效。
消息异常处理
当我们的消息处理程序发生异常后,可以通过自定义异常处理句柄进行统一异常信息进行处理。
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
10000 :
timeout: 10000
注意:如果你使用的是低版本那么配置的redis应该是spring.redis.xxx。
2.2 快速入门
首先,我们要创建消息接收处理程序
@Component
public class MessageReceiver {
private final Logger logger = LoggerFactory.getLogger(getClass()) ;
public void receiveMessage(String message) {
logger.info("接收到消息: {}", message) ;
}
}
在任何基于消息的应用程序中,都有消息发布者和消息接收者。