【发布时间】:2017-09-01 00:55:39
【问题描述】:
我正在尝试优雅地处理 Couchbase 引导失败,而不是让应用程序启动失败。这个想法是使用“Couchbase 作为服务”,这样如果我无法连接到它,我应该仍然能够返回降级的响应。通过使用 Couchbase 异步 API,我已经能够在一定程度上实现这一点; RxJava FTW。
问题是,当服务器关闭时,Couchbase Java 客户端会发疯并不断尝试连接到服务器;据我所知,执行此操作的课程是ConfigEndpoint,并且在放弃之前尝试的次数没有限制。这使日志充满了java.net.ConnectException: Connection refused 错误。我想要的是让它尝试几次,然后停止。
有什么可以提供帮助的想法吗?
编辑:
这是sample app。
重现问题的步骤:
-
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 客户端将持续淹没控制台。
【问题讨论】:
-
刚刚和一位同事谈过这件事,有一件事是模棱两可的。您是说引导程序在启动时失败,还是稍后在集群中出现故障时失败?我们认为如果它在启动时无法连接,它应该几乎立即失败。也许一个小的示例应用会有所帮助。
-
@MattIngenthron 使用示例应用查看编辑。
-
从代码看来,你有一个自己的 spring-data-couchbase 实现。是否存在无法使用现有 spring-data-couchbase 的特殊原因?我认为它不起作用,因为您在实现 spring 集成时存在问题。
-
@subhashni 我已经回答了您关于已删除的虚假答案的问题。
-
“spring data cb 无法处理引导失败。而你的问题不是我的问题的答案”——这就是你的答案。根据报告称这是一个虚假的答案,它被标记为删除。谢谢。
标签: spring couchbase couchbase-java-api