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();}}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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训练数据并当服务器共享给他人