自学内容网 自学内容网

Redis-消息队列

消息队列概念

消息队列不仅可以用来传输消息,还可以确保消息的安全性(持久化、确保消息被消费)

Redis消息队列实现

基于List结构模拟消息队列

非阻塞式:利用LPUSH结合RPOP、或者RPUSH结合LPOP来实现;

阻塞式:利用BLPUSH和BRPOP实现

如果已经从队列中取到了消息,但是发生宕机等情况,这条消息就会丢失,并且pop的形式也只支持单消费者(智能有一个人拿到这个消息)

基于PubSub的消息队列

PubSub是Redis2.0版本引入的消息传递模型。消费者可以订阅一个或多个channel,生产者向对应channel发送消息后,所有订阅者都能收到相关信息。

发送的消息不会在redis中保存,如果没有人接收就会丢失。

基于Stream的消息队列

单消费模式

Stream是Redis 5.0引入的一种新数据类型,可以实现一个功能非常完善的消息队列。

发送消息命令:

读取消息的方式:

堵塞式读取方法:

当指定起始ID为¥(读取最新消息)时,如果同时来了好几条消息,会出现消息漏读的情况。

消费者组

创建消费者组:

从消费者组读取消息:

确认消息:XACK [消费者][组][消息序号]

JAVA代码实现

优点


原文地址:https://blog.csdn.net/m0_61702109/article/details/142761671

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!