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()));
消息消费成功
相关推荐
薪火铺子7 小时前
MySQL 性能优化:慢查询与索引优化实战
数据库·mysql·性能优化
南境十里·墨染春水7 小时前
C++ 日志 4—— 多线程安全与异步日志优化
数据库·c++·安全
七夜zippoe7 小时前
DolphinDB索引设计:提升查询性能
数据库·索引·性能·查询·dolphindb
2401_898717667 小时前
HTML5中SVG原生动画标签Animate的基础用法
jvm·数据库·python
小江的记录本7 小时前
【MySQL】《MySQL基础架构 面试核心考点问答清单》
前端·数据库·后端·sql·mysql·adb·面试
猫的玖月7 小时前
(七)函数
android·数据库·sql
2401_867623987 小时前
mysql如何导出特定条件的查询数据_使用mysqldump加where参数
jvm·数据库·python
会编程的土豆7 小时前
MySQL 窗口函数详解
数据库·后端·mysql
Devin~Y7 小时前
大厂Java面试实录:Spring Boot/JPA/Redis/Kafka/K8s 可观测性 + Spring AI RAG/Agent(小Y翻车现场)
java·spring boot·redis·mybatis·hibernate·spring mvc·jpa
武帝为此7 小时前
【软件开发日志介绍】
java·前端·数据库