Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接mongo驱动程序时Spring boot mongo超时_Java_Spring_Spring Boot - Fatal编程技术网

Java 连接mongo驱动程序时Spring boot mongo超时

Java 连接mongo驱动程序时Spring boot mongo超时,java,spring,spring-boot,Java,Spring,Spring Boot,当我使用spring boot starter数据mongodb时。我总是有一个超时异常。日志详细信息如下: 有谁能告诉我为什么我总是超时?非常感谢 2019-04-01 19:08:50.255 INFO 8336 --- [168.0.101:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server 192.168.0.101:27017

当我使用spring boot starter数据mongodb时。我总是有一个超时异常。日志详细信息如下:

有谁能告诉我为什么我总是超时?非常感谢

2019-04-01 19:08:50.255  INFO 8336 --- [168.0.101:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server 192.168.0.101:27017

com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
    at com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.java:530)
    at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:421)

2019-04-01 19:09:15.163 DEBUG 8336 --- [nio-8888-exec-1] o.s.b.w.s.f.OrderedRequestContextFilter  : Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@4ce3ddaf
2019-04-01 19:09:15.165 ERROR 8336 --- [nio-8888-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.0.101:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message}, caused by {java.net.SocketTimeoutException: Read timed out}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.0.101:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message}, caused by {java.net.SocketTimeoutException: Read timed out}}]] with root cause

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.0.101:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message}, caused by {java.net.SocketTimeoutException: Read timed out}}]
    at com.mongodb.connection.BaseCluster.getDescription(BaseCluster.java:167)
    at com.mongodb.Mongo.getConnectedClusterDescription(Mongo.java:885)
    at com.mongodb.Mongo.createClientSession(Mongo.java:877)
    at com.mongodb.Mongo$3.getClientSession(Mongo.java:866)
我的
application.yml
是,spring boot版本是2.0.8.RELEASE,以下是内容:

spring:
  data:
    mongodb:
      host: 192.168.0.101
      port: 27017
      username: test
      password: test
      database: test
server:
  port: 8888
management:
  health:
    mongo:
      enabled: false

这不是最终解决方案,但您可以尝试更长的超时时间

 # The time to wait to establish a connection before timing out, in seconds.
 # (default: 10)
  connect_timeout: 99
如果它在更改超时后成功连接,您应该找到建立连接花费如此长时间的原因,并尝试修复它。 如果设置了很长的超时后,它仍无法连接,则应检查代理并尝试ping位于mongodb所在位置的计算机。

您可以尝试以下操作:

<dependency>
    <groupId>com.spring4all</groupId>
    <artifactId>mongodb-plus-spring-boot-starter</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>
比您有更多的配置属性可供使用:)

我还没有试过。。。但也许值得一试


或者在回购协议中查看如何在不依赖项目的情况下完成;)

身份验证数据库=管理员uri=mongodb://username:password@192.168.0.101:27017存储库:enabled=true您可以在这里查看:非常感谢。先生。但我一直不明白为什么我的代码可以连接到mongo服务器,但却无法从中获得响应消息,而我的本地Pc和mongo服务器总是可以相互ping。我猜mongo服务器配置可能有问题。我想知道您是否获得了这些示例配置属性并找到了这个酱汁-它还包括其他示例配置
@EnableMongoPlus
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
spring.data.mongodb.option.min-connection-per-host=0
spring.data.mongodb.option.max-connection-per-host=100
spring.data.mongodb.option.threads-allowed-to-block-for-connection-multiplier=5
spring.data.mongodb.option.server-selection-timeout=30000
spring.data.mongodb.option.max-wait-time=120000
spring.data.mongodb.option.max-connection-idle-time=0
spring.data.mongodb.option.max-connection-life-time=0
spring.data.mongodb.option.connect-timeout=10000
spring.data.mongodb.option.socket-timeout=0

spring.data.mongodb.option.socket-keep-alive=false
spring.data.mongodb.option.ssl-enabled=false
spring.data.mongodb.option.ssl-invalid-host-name-allowed=false
spring.data.mongodb.option.always-use-m-beans=false

spring.data.mongodb.option.heartbeat-socket-timeout=20000
spring.data.mongodb.option.heartbeat-connect-timeout=20000
spring.data.mongodb.option.min-heartbeat-frequency=500
spring.data.mongodb.option.heartbeat-frequency=10000
spring.data.mongodb.option.local-threshold=15