Redis Stream 使用
XGROUP CREATE mystream mygroup $ MKSTREAM

重复创建会报错:"BUSYGROUP Consumer Group name already exists"

往 stream 中发送一条消息:

读取消息:

再发送几条消息:

读取未确认的消息:
XREADGROUP group mygroup consumerA STREAMS mystream 0-0

需要注意的是,Pending 中没有消息和 stream 中没有消息,返回值是不一样的:

Pending 中没有消息返回结构是这样的:

Stream 中没有消息返回结构是这样的:


确认消息之后:
XACK mystream mygroup 1741163102122-0

处理完成所有未确认的消息:

再创建一个 stream,用相同的 group:

不同的 group 消费同一个 stream,可以看到:



使用 XREADGROUP 命令从消费者组读取消息时,指定消息的起始 ID 为 0-0,表示读取当前消费者所有未确认(Pending)的消息(即曾经分配给该消费者但未发送 ACK 的消息)。
服务重启后,通过 XREADGROUP 从 0-0 读取,可以重新获取之前未完成处理的消息。处理完 Pending 消息后,使用 > 监听新消息,确保实时性。
使用 0-0 重新读取消息时,消息的投递次数(delivery count)会递增,需确保业务逻辑支持重复处理。
通过 XPENDING 和 XCLAIM 可以手动处理长期未确认的消息(如转移到死信队列)。

浙公网安备 33010602011771号