2

我正在使用用于 JVM 的 Lettuce Redis 客户端来构建由 Redis 列表支持的队列。理想情况下,它的行为类似于内存队列,但由于涉及网络交互,这是不可能的。

Lettuce docs 中有一个关于错误处理的部分,在我的情况下,我想在错误时重试失败的命令。问题是异常层次结构不是很细,我不确定如何处理以下问题:

  • 如何确定是否可以重试失败的命令?命令可能无限期失败并且重试会导致无限循环的原因有很多——当前的 Redis 版本不支持使用的命令语法,密钥已经存在并且它是不兼容的类型等。
  • 如果网络不可靠,我可以依靠生菜始终重新连接吗?是否有可能在某些情况下我不应该重试某些RedisException,或者NativeIoException重新创建 Redis 客户端实例,甚至重新启动整个应用程序?
  • 有没有办法知道 Redis 是否实际执行了失败的命令并且重试不会导致重复或数据丢失(或者至少在某些情况下这可能由异常类确定)?这可能是一次性交付的一个基本问题,据我所知,Redis 没有提供任何方法来处理这个问题(例如,与 Kafka 不同)但也许有一些既定的做法来处理这个问题?

这个问题看起来每个人都必须处理,但似乎没有很多关于此的信息。

4

0 回答 0