开发者学堂课程【使用 Redis 消息队列完成秒杀过期订单处理 :SpringDataRedis 中定义消息的监听器】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/729/detail/13017
SpringDataRedis 中定义消息的监听器
在 Java 程序中监听 redis 消息
上章完成了在 java 代码端使用 spring data redis 的形式和 redis 服务器产生了交互,并且可以成功存放数据以及读取数据。
但本章不仅仅是和 redis 服务器存取的功能还需要接受 redis 服务器向用户发来的消息通知,在 spring data redis 中如果要接受 redis的消息通知还需要做两步操作:
1. 配置 java 消息的监听类
2. 将监听类配置到 spring data redis 的配置文件中。以下就是整个过程展示。
1.编写监听类
首先在 java 文件包中创建一个 class 监听类,命名为 redis 消息监听 RedisMessageListener
同时放到 cn.itcast.listener 这个包下。
在 spring data redis 中如果要接受 redis 的消息通知,需要配置一个监听类,同时还需要一个接口: MessageListener,所以点击 add,添加此接口,最后点击 finish 即可。
至此监听类 RedisMessageListener 就定义了一个消息通知的监听器 RedisMessageListener,其中有一个 onMessage方法是用来处理消息的,而对于 RedisMessageListener 其中配置的为 redis 消息的监听器,目的是获取 redis 中的消息病进行处理,同时其中的 message 参数:
指完成的消息,其中包含频道的信息,以及消息的具体内容 ,pattern:指获取的频道消息。
- RedisMessageListener 代码如下:
package cn.itcast.listener;
import org.springframework.data.redis.connection.Message;
/**
*配器 redis 消息的监听器:
* 获取 redis 中的消息并进行处理
*/
public class RedisMessageListener implements MessageListener {
**
* onMessage :处理消息
* message:完整的消息(频道的信息,以及消息的具体内容)
* pattern:获取的频道信息
*/
public void onMessage(Message message, byte[ ] pattern{
//要输入得到的频道,而 message.getChannerl() 方法是 byte[] 数组形式,所以需要转义为字符串类型
//message.getBody() 表示获取消息主体,new String 表示转
义为字符串类型
system.out.println("从channel为: "+new String(message.getChannel())+"获取了条新的消息,消息内容为:"+new String(message.getBody());
}
}
到目前为止,自行定义的编译器代码全部完成。