XACK:将消息标记为“已处理”

通过执行XACK命令,用户可以将消费者组中的指定消息标记为“已处理”。被标记的消息将从当前消费者的待处理消息队列中移除,而之后执行的XREADGROUP命令也不会再读取这些消息:

XACK stream group id [id id ...]

XACK 命令在执行之后将返回被标记的消息数量作为结果。

举个例子,假设现在消费者worker1有一条ID为1534498374797-0的消息待处理:

redis> XPENDING cgs all-message - + 1 worker1
1) 1) 1534498374797-0
2) "worker1"
3) (integer) 19027
4) (integer) 1

如果执行以下命令,那么该消息将被标记为“已处理”:

redis> XACK cgs all-message 1534498374797-0
(integer) 1 -- 有一条消息被标记了

被标记的这条消息将从消费者worker1的待处理消息队列中消失:

redis> XPENDING cgs all-message - + 1 worker1
(empty list or set)

其他信息

  • 复杂度:O(N),其中N为用户给定的消息ID数量。

  • 版本要求:XACK命令从Redis 5.0.0版本开始可用。