Redis XGROUP DELCONSUMER.挂起的消息会发生什么情况



是否可以重新分配它们,并将其放回队列?

有什么好方法可以确保没有任何悬而未决的事情持续太久?

您可以使用xpending命令:

XPENDING mystream group55 - + 10 consumer-123

删除使用者时,挂起的消息会发生什么

根据XGROUP DELCONSUMER,所有挂起的消息都将被删除。您可以自己轻松验证:

// Create stream and fill it with some messages
XADD mystream * msg 1
XADD mystream * msg 2
XADD mystream * msg 3
// Create group for stream and set read position to start
XGROUP CREATE mystream mygroup 0
// Read 2 messages
XREADGROUP GROUP mygroup myconsumer COUNT 2 STREAMS mystream >
// Verify that messages we read are pending
XPENDING mystream mygroup - + 10 myconsumer
// Delete Consumer
XGROUP DELCONSUMER mystream mygroup myconsumer
// Verify that pending messages are gone
XPENDING mystream mygroup - + 10 myconsumer
// Verify that new consumer receives third message only
XREADGROUP GROUP mygroup mynewconsumer STREAMS mystream >

AFAIK没有明确的方法可以将挂起的消息放回流中,但您可以使用XCLAIM和XAUTOCAIM将它们重新分配给另一个使用者,然后安全地删除使用者。

相关内容

最新更新