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()));
消息消费成功
相关推荐
IpdataCloud36 分钟前
跨区服玩家延迟高怎么办?用IP离线库自动分配到最近服务器
数据库·tcp/ip·github·php·ip
wuqingshun3141592 小时前
MYSQL默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
空中湖2 小时前
电池简史(五):极限之梦与终章——锂硫、锂空气、量子电池,以及你该知道的电池投资与生活指南
数据库·程序人生
蓝胖子酱3 小时前
在 Electron 中用 electron-store 实现加密存储与自定义格式文件
前端·javascript·数据库
snow@li4 小时前
Redis:数据库语法速查表 / 全景梳理
数据库·redis·缓存
Devlive 开源社区4 小时前
Nebula 1.6.0 发布:跨区域桶自动路由、秒传、文本/PDF 预览一次到位
数据库·sql
这个DBA有点耶4 小时前
导个数据中文全变问号?字符集这事儿真没那么简单
数据库·mysql·代码规范
Alluxio5 小时前
Alluxio + Anyscale Ray框架,实现跨区域训练数据读取速度20倍提升
人工智能·分布式·机器学习·缓存·ai
wuqingshun3141595 小时前
MYSQL中如果发生死锁应该如何解决?
数据库·mysql
DO_Community5 小时前
Weaviate 托管数据库现已在 DigitalOcean 上开放公测
数据库·人工智能·开源·向量数据库·weaviate