我正在使用 Datastax Cassandra 驱动程序,并设置了 RetryPolicy 以在主机不可用时重试。但是,我注意到它会尽可能快地重试。我想将其更改为在重试之间增加延迟,而不是在集群陷入困境时对其进行打击。这对于OVERLOADED
请求错误尤其重要,因为我确实想在这些情况下重试,但会造成很大的延迟。
哪里是延迟的正确位置以及正确的机制是什么?我应该在 RetryPolicy 中抛出一个 Thread.sleep(...)
吗?
我不介意占用一个在线请求槽(朝向最大数量的正在进行的请求),但如果我们尚未达到正在进行的请求限制,我不同意完全阻止其他写入。
最佳答案
您可以通过添加延迟来实现自己的重试策略。最简单的方法是选择默认重试的源代码并自行修改以实现重试的指数延迟或类似的东西。
指数延迟,看http://docs.datastax.com/en/drivers/java/3.0/com/datastax/driver/core/policies/ExponentialReconnectionPolicy.html的源码即可看看它是如何工作的
关于cassandra - Datastax Cassandra 驱动程序重试策略延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41700138/