场景:提供了一个可以向数据库写数据的接口,当这个接口请求量很大时,需要考虑通过异步的方式去执行业务代码。
因为接口请求很大的情况不是很多,不需要集成MQ队列增加系统复杂度和部署难度,这个时候考虑选择使用redis的发布订阅模式,在请求进来时发布到redis的通道中,然后监听器中去消费通道里面的消息,实现轻量级的MQ功能。
1.新建一个redis的监听器
package com.***.jcpt.system.controller.api.redisPs;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* redis订阅监听器
*/
@Component
public class RedisMessageListener implements MessageListener {
@Resource
private RedisTemplate redisTemplate;
@Override
public void onMessage(Message message, byte[] pattern) {
// 获取消息
byte[] messageBody = message.getBody();
// 使用值序列化器转换
Object msg = redisTemplate.getValueSerializer().deserialize(messageBo