我有以下场景:
-
Redis SENTINEL,带有一个主REDI和两个副本
-
Redis连接超时配置为30秒
-
Lettuce的Java REDIS客户端
-
生菜REDIS客户端上的春季数据
我有一个REDIS列表,我正在使用它作为队列。正如预期的那样,队列中的每个元素都必须由一个且只能由一个元素处理器处理。然而,在一些奇怪的角落案例中,我有时会遇到这样的情况:
-> BLMOVE A B 8
(*) I get a timeout here after 30 seconds
(这是,从列表中移动
A
要列出
B
和块
8 seconds
我遇到的问题是ELEMENT实际上是从列表中移出的
A.
要列出
B
并且我仍然得到超时,所以在这个异常之后,元素在队列中丢失
B
并且永远不会被处理。我知道这可能是REDIS连接的网络问题。
我的问题是:处理这样的案件最好的方法是什么?有没有办法“恢复”未处理的元素并重试?