spring集成redis消息列队

复制代码
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.BoundListOperations;
import org.springframework.data.redis.core.RedisTemplate;

import com.qmtt.api.web.controller.TaskController;

public class RedisQueue implements InitializingBean {
    private static final Logger log = Logger.getLogger(TaskController.class);

    @Value("${redis.queue}")
    public String queueName;
    @Autowired
    RedisTemplate redisTemplate;
    BoundListOperations<String, String> listRedisTemplate;

    public void pushMsg(String value) {
        listRedisTemplate.leftPush(value);
    }

    class ListenerThread extends Thread {
        @Override
        public void run() {
            try {
                while (true) {
                    String value = listRedisTemplate.rightPop();
                    if (StringUtils.isNotEmpty(value)) {

                    }
                    System.out.println(value);
                    Thread.sleep(5000);
                }
            } catch (Exception e) {
                log.error("", e);
            }
        }
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        listRedisTemplate = redisTemplate.boundListOps(queueName);
        // 启动监听
        ListenerThread thread = new ListenerThread();
        thread.setDaemon(true);
        thread.start();
    }
}
复制代码

 

package com.qmtt.api.message.consumer;
import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.data.redis.core.BoundListOperations;import org.springframework.data.redis.core.RedisTemplate;
import com.qmtt.api.web.controller.TaskController;
public class RedisQueue implements InitializingBean {private static final Logger log = Logger.getLogger(TaskController.class);
@Value("${redis.queue}")public String queueName;@AutowiredRedisTemplate redisTemplate;BoundListOperations<String, String> listRedisTemplate;
public void pushMsg(String value) {listRedisTemplate.leftPush(value);}
class ListenerThread extends Thread {@Overridepublic void run() {try {while (true) {String value = listRedisTemplate.rightPop();if (StringUtils.isNotEmpty(value)) {
}System.out.println(value);Thread.sleep(5000);}} catch (Exception e) {log.error("", e);}}}
@Overridepublic void afterPropertiesSet() throws Exception {listRedisTemplate = redisTemplate.boundListOps(queueName);// 启动监听ListenerThread thread = new ListenerThread();thread.setDaemon(true);thread.start();}}

posted @   wujf  阅读(1984)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示