春季启动 mongo mongoSocketException

oki*_*sad 3 java spring spring-data-mongodb spring-boot

我正在为我的 rest api 使用 spring boot,但我有关于 mongo 数据库的问题。当需要 mongo 操作的端点被触发时,应用程序有时会抛出 mongo socket 异常并且不执行以下代码。我将 socketkeepalive 的值赋值为 true,但它确实解决了我的问题。我怎样才能摆脱这个问题,你能给我提供合适的 spring boot mongo db 配置值吗?

顺便说一下,程序运行正常。但有时它会抛出这个异常。

谢谢

INFO  org.mongodb.driver.cluster - Exception in monitor thread while connecting to server **.***.***.***:42015
com.mongodb.MongoSocketOpenException: Exception opening socket
        at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
        at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
        at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57)
        at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
        ... 3 common frames omitted
Run Code Online (Sandbox Code Playgroud)

sss*_*aya 6

  1. Spring Boot有一个叫做“自动配置”的特性。在这种情况下,一旦在类路径上检测到 Mongo 驱动程序,就会使用默认值激活MongoAutoConfiguration,该值指向localhost:27017。如果您不想要这种行为,您现在可以为MongoDB配置属性(请参阅http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-mongodb以获得有效的属性键)或禁用 MongoAutoConfiguration:

    @SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})

  2. 当 Mongo DB 未运行时,Spring Boot会抛出此异常。请确保Mongodb正在运行。启动 Mongo DB 后,它为我解决了。

  3. 您可以检查 mongoDB 是否正在运行 27017 是否正在运行。在您的终端中使用此代码

    netstat -plntu

并请告诉我您的配置文件或属性文件。