如何获取minidletime大于某个值的挂起项目?

rqenqsqc  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(325)

使用redis流,我们可以有一些消费者没有完成的挂起项目。我可以使用xpending命令找到这样的项目。我们有两个悬而未决的项目:

1) 1) "1-0"
   2) "local-dev"
   3) (integer) 9599
   4) (integer) 1
2) 1) "2-0"
   2) "local-dev"
   3) (integer) 9599
   4) (integer) 1

使用 xpending 我们只能根据id设置过滤器。我有几个服务节点( A , B )使僵尸检查: XPENDING mystream test_group - 5 1 他们每个人都收到 "1-0" 物品和他们制造的 xclaim 其中只有一个(例如 A )成为所有者并开始处理此项目。但是 Bxpending 再次获得新的项目,但它再次收到 "1-0" 因为还没有处理( A 正在工作),看起来我的所有队列都被阻塞了。
有什么办法可以避免它,同时处理挂起的项目吗?

lx0bsm1f

lx0bsm1f1#

您希望查看文档,特别是从永久性故障中恢复。
通常使用的方法是:
您允许同一使用者在恢复后使用其来自pel的消息。
只有你 XCLAIM 当一段相当长的时间过去后,从另一个消费者那里,这表明原始消费者处于永久性故障中。
你用投递计数来检测毒药或死亡信件。如果一条消息被重试了很多次,那么最好将它报告给管理员进行分析。
所以通常你只需要从其他消费者那里看到pel中最老的年龄就可以得到永久性的故障恢复逻辑,然后你一个接一个地消费。

相关问题