spring-boot. 结合redis 实现消息队列

导入依赖jar包

XML 复制代码
        <!-- redis 配置信息-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

实现消息监听接口 MessageListener\重写 onMessage方法

java 复制代码
/**
 * @author haizhuangbu
 * @date 2024/3/31 11:30
 * @mark UserInfoRegisterTopicListen
 */
@Component
@Slf4j
public class UserInfoRegisterTopicListen implements MessageListener {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public void onMessage(Message message, byte[] bytes) {
        log.info("接收到redis消息队列消息 : {}", message.toString());
    }
}

绑定 topic 与 监听器

java 复制代码
@Configuration
public class RedisTopicQueueConfig {

    @Autowired
    private UserInfoRegisterTopicListen userInfoRegisterTopicListen;


    /**
     * @param connectionFactory 连接工厂
     * @return redis 监听容器
     */
    @Bean
    public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
        redisMessageListenerContainer.setConnectionFactory(connectionFactory); // 连接工厂
        redisMessageListenerContainer
                // 配置适配器与对应消息队列信息
                .addMessageListener(new MessageListenerAdapter(userInfoRegisterTopicListen, MessageListenerAdapter.ORIGINAL_DEFAULT_LISTENER_METHOD),
                        new ChannelTopic(RedisTopicQueueEnum.USER_REGISTER.getTopic()));
        return redisMessageListenerContainer;
    }

}

测试

代码测试
java 复制代码
redisTemplate.convertAndSend("userRegister", String.format("用户 %s 注册失败", userDto.getUsername()));
消息消费成功
相关推荐
弹简特2 分钟前
【Redis】01-认识Redis+分布式系统知识背景介绍
数据库·redis·缓存
2401_871492857 分钟前
Vue.js计算属性computed依赖追踪与副作用函数effect关联机制
jvm·数据库·python
他们叫我阿冠9 分钟前
SpringAI的基础学习
数据库·redis·缓存
2401_8822737211 分钟前
SQL如何快速提取分组中最晚时间点数据_结合窗口函数实现
jvm·数据库·python
2301_8148098630 分钟前
如何用 cookie 的 HttpOnly 与 Secure 属性防范 XSS 攻击
jvm·数据库·python
m0_5150984232 分钟前
如何用 Object.keys 与 getOwnPropertyNames 遍历键名
jvm·数据库·python
还是阿落呀34 分钟前
第三章 添加数据
数据库·mysql
qq_1898070341 分钟前
golang如何实现日志按级别过滤_golang日志按级别过滤实现教程
jvm·数据库·python
abc123456sdggfd42 分钟前
Golang map底层实现原理_Golang map哈希表原理教程【经典】
jvm·数据库·python
roman_日积跬步-终至千里43 分钟前
【案例题-知识点(2)】架构风格上(五大类详解)
数据库·架构·系统架构