Springboot Redis消息队列

Springboot Redis消息队列RedislistRed 的 list 列表 数据结构常用来作为异步消息队列使用 使用 rpush lpush 操作入队列 使用 lpop 和 rpop 来出队列 rpushRPUSHke value 将一个或多个值 value 插入到列表 key 的表尾 最右边 如果有多个 value 值 那么各个 value 值按从左到右的顺序依次插入到表尾 比如对一个空列表 mylist 执行 RPUSHmylista 得出的结果列表为 abc 等同于执行命令

Redis list

Redis 的 list(列表) 数据结构常用来作为异步消息队列使用,使用rpush/lpush操作入队列,

使用 lpoprpop来出队列。

rpush

RPUSH key value [value …]

将一个或多个值 value 插入到列表 key 的表尾(最右边)。

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist aRPUSH mylist bRPUSH mylist c

如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。

key 存在但不是列表类型时,返回一个错误。

lpush

LPUSH key value [value …]

将一个或多个值 value 插入到列表 key 的表头

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist aLPUSH mylist bLPUSH mylist c 三个命令。

如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。

key 存在但不是列表类型时,返回一个错误。

lpop

LPOP key

移除并返回列表 key 的头元素。

rpop

RPOP key

移除并返回列表 key 的尾元素。

StringRedisTemplete实现消息队列

2020-12-23_143411

消息生产者

/ * @author xianping * @version 1.0 * @classname MessagePublisher * @description 消息生产者 * @date 2020/12/07 11:48 */ @Component public class MessagePublisher { 
    @Resource private StringRedisTemplate stringRedisTemplate; //消息消费者 @Resource private MessageCustomer messageCustomer; //队列 private ListOperations<String, String> listOperations; //初始化队列 @PostConstruct private void init() { 
    this.listOperations = stringRedisTemplate.opsForList(); } /* * @description 发布消息 * @author xianping * @date 2020/12/7 * @param queue * @param message * @return void / public void publishMessage(String message) { 
    //消费者线程开启 if (!messageCustomer.isAlive()) messageCustomer.start(); listOperations.leftPush(MessageCustomer.REPORTQUEUE, message); } } 

消息消费者

/ * @author xianping * @version 1.0 * @classname MessageCustom * @description * @date 2020/12/07 12:00 */ @Component @SuppressWarnings("All") public class MessageCustomer extends Thread { 
    @Resource private StringRedisTemplate stringRedisTemplate; @Resource private MatterReportService reportService; private ListOperations<String, String> listOperations; public final static String REPORTQUEUE = "QUEUE::NAME"; @PostConstruct private void init() { 
    this.listOperations = stringRedisTemplate.opsForList(); } /* * @description 消息消费者 * @author xianping * @date 2020/12/7 * @return void / @Override public void run() { 
    //消费者循环等待 while (true) { 
    String message = listOperations.rightPop(REPORTQUEUE); //队列中有消息则弹出消费 if (StringUtils.isNotBlank(message)) { 
    System.out.println("message = " + message); } } } } 

使用

@RunWith(SpringRunner.class) @SpringBootTest public class SpringBootApplicationTests { 
    @Autowired private MessagePublisher publisher; @Test public void testRedisQueue() { 
    publisher.publishMessage("redis消息队列测试!"); } } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221051.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:02
下一篇 2026年3月17日 下午7:02


相关推荐

  • 爆火全球的OpenClaw到底是啥?一文给你讲透!

    爆火全球的OpenClaw到底是啥?一文给你讲透!

    2026年3月13日
    2
  • 微信小程序开发实战总结(附源码)

    微信小程序开发实战总结(附源码)最近抽空学习了一下小程序 首先去看了一下官方文档 https developers weixin com miniprogram dev framework 然后写了几个页面熟悉了一下开发模式 顺便模仿 小独 一个读文章的 APP 做了一个小程序练练手 已经将代码放到 github 上面 下载地址见文章末尾 如有需要 欢迎 clone 交流学习 下面是小程序码 大家可以在手机上面看效果

    2026年3月17日
    3
  • Linux中的程序和进程,PID和PPID

    Linux中的程序和进程,PID和PPID环境 VmwareWorkst CentOS 6 4 x86 64 程序和进程 1 程序 程序是静止的 程序就是磁盘上的一个文件 2 进程 进程是一个正在执行的程序的实例 3 进程是动态的 4 一旦程序被操作系统加载进内存了 那么这程序就成为了进程 PID 和 PPID 1 PID processID PID 是程序被操作系统加载到内存成为进

    2026年3月19日
    2
  • proxifier注册码

    proxifier注册码proxifier 注册码 5EZ8G C3WL5 B56YG SCXM9 6QZAPG3ZC7 7YGPY FZD3A FMNF9 ENTJBYTZGN FYT53 J253L ZQZS4 YLBN9 用户名 zxhi 注册码 LYZGL F2KX3 JW5W4 A33MC 25QHHECZ83 82S6F AM2WR Z5ASV JC3CG2LZLR WYDXF NEA3A UKVUB

    2026年3月20日
    2
  • 详解BP神经网络

    BackPropagationNeuronNetWok  BP神经网络学习算法可以说是目前最成功的神经网络学习算法。显示任务中使用神经网络时,大多数是使用BP算法进行训练.  在我看来BP神经网络就是一个”万能的模型+误差修正函数“,每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型。举一个例子:比如某厂商生产一种产品,投放到市场之…

    2022年4月6日
    70
  • spring boot 系列之四:spring boot 整合JPA[通俗易懂]

    上一篇我们讲了springboot整合JdbcTemplate来进行数据的持久化,这篇我们来说下怎么通过springboot整合JPA来实现数据的持久化。一、代码实现二、知识点引申关于

    2022年2月16日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号