我正在使用Datastax Cassandra驱动程序,并且有一个RetryPolicy设置,可以在主机不可用时重试。但是,我注意到它会尽可能快地重试。我想改变它,让重试之间的延迟越来越大,而不是在集群陷入困境时敲打它。这对于OVERLOADED
请求错误尤其重要,因为我确实想在这些情况下重试,但会有很大的延迟。
在哪里放置延迟是正确的,什么是正确的机制?我应该在我的RetryPolicy中抛出一个Thread.sleep(...)
吗?
我不介意接受在线请求(接近传输中请求的最大数量),但如果我们还没有达到传输中请求的限制,我就不能完全阻止其他写入。
发布于 2016-02-22 20:04:34
您可以通过添加延迟来实现自己的重试策略。最简单的方法是选择默认重试的源代码,并自己修改它,以实现重试或类似操作的指数延迟。
对于指数延迟,只需查看http://docs.datastax.com/en/drivers/java/3.0/com/datastax/driver/core/policies/ExponentialReconnectionPolicy.html的源代码即可了解其工作原理
https://stackoverflow.com/questions/35562640
复制相似问题