必须Redis5.0以上。
1、创建消费者组
XGROUP CREATE key groupName ID [MKSTREAM]
- key:队列名称
- groupName:消费者组
- ID:起始ID标识,$代表最后一个消息,0代表队列中的第一个消息
- MKSTREAM:队列不存在时自动创建队列
2、删除指定消费者组
XGROUP DESTORY key groupName
3、给指定的消费者组添加消费者
XGROUP CREATECONSUMER key groupName consumerName
4、删除消费者组中的指定消费者
XGOUP DELCONSUMER key groupName consumerName
5、从消费者组读取消息
XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [keys ...] ID [ID ...]
- group:消费者组名
- consumer:消费者名称,如果消费者不存在,会自动创建一个消费者
- count:本次查询的最大数量
- BLOCK milliseconds:没有消息时的最大等待时间
- NOACK:无需手动ACK,获取到消息后自动确认
- STREAM key:指定队列名称
- ID:获取消息的起始ID:
- “>”:从下一个未消费的消息开始
- 其它:根据指定id从pending-list中读取已消费但未确认的消息,例如0,是从pending-list中的第一个消息开始,当消费完成后,该消息会从pending-list中删除,则下一条消息变为第一条消息,继续读取。
6、确认消息
XACK 队列名 组名 消息id
7、查看pending-list中的消息
XPENDING 队列名 组名 - + 10
pending-list中存储的是已消费但却还未确认的消息,即可能的情况就是,处理完消息后宕机导致没有确认消息,则这条消息会存储在pending-list。