我正在尝试优雅地处理 Couchbase 引导失败,而不是让应用程序启动失败。这个想法是使用“Couchbase 即服务”,这样如果我无法连接到它,我应该仍然能够返回降级的响应。通过使用 Couchbase 异步 API,我已经能够在一定程度上实现这一点;RxJava FTW。
问题是,当服务器关闭时,Couchbase Java 客户端会发疯并不断尝试连接到服务器;据我所知,这样做的课程ConfigEndpoint
在放弃之前尝试了多少次是没有限制的。这会使日志充满java.net.ConnectException: Connection refused
错误。我想要的是让它尝试几次,然后停止。
有什么可以提供帮助的想法吗?
编辑:
这是一个示例应用程序。
重现问题的步骤:
svn export https://github.com/asarkar/spring/trunk/beer-demo
.- 从
beer-demo
目录中,运行./gradlew bootRun
. 等待应用程序启动。 - 从另一个控制台,运行
curl -H "Accept: application/json" "http://localhost:8080/beers"
. 由于无法连接到 Couchbase,客户端请求将超时,但 Couchbase 客户端将持续淹没控制台。