关于java连接mongodb超时时间

weixin_38048740 2017-08-01 02:10:23
当mongodb服务器宕机时,程序肯定连接不上。但是要等待很长时间才能抛出com.mongodb.MongoTimeoutException的异常。即使是设置了socketTimeout和connectTimeout的时间,仍然是要等待30000ms。想请教一下,如何能设置这个时间,或者能先判断是否能连接上mongodb。所用MongoDB Java Driver版本是3.2.2。 下面列出异常信息和连接mongodb时的一些参数。 com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=172.17.153.168:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketTimeoutException}}]     at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:369)     at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)     at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75)     at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71)     at com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)     at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:210)     at com.mongodb.operation.FindOperation.execute(FindOperation.java:482)     at com.mongodb.operation.FindOperation.execute(FindOperation.java:79)     at com.mongodb.Mongo.execute(Mongo.java:772)     at com.mongodb.Mongo$2.execute(Mongo.java:759)     at com.mongodb.FindIterableImpl$FindOperationIterable.first(FindIterableImpl.java:207)     at com.mongodb.FindIterableImpl.first(FindIterableImpl.java:148)     at com.ningxun.util.MongoUtil.findOne(MongoUtil.java:365)     at com.ningxun.util.MongoUtil.main(MongoUtil.java:599) Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=172.17.153.168:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketTimeoutException}}]     at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:369)     at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)     at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75)     at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71)     at com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)     at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:210)     at com.mongodb.operation.FindOperation.execute(FindOperation.java:482)     at com.mongodb.operation.FindOperation.execute(FindOperation.java:79)     at com.mongodb.Mongo.execute(Mongo.java:772)     at com.mongodb.Mongo$2.execute(Mongo.java:759)     at com.mongodb.FindIterableImpl$FindOperationIterable.first(FindIterableImpl.java:207)     at com.mongodb.FindIterableImpl.first(FindIterableImpl.java:148)     at com.ningxun.util.MongoUtil.findOne(MongoUtil.java:365)     at com.ningxun.util.MongoUtil.main(MongoUtil.java:599)
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧