簡體   English   中英

春季啟動 mongo mongoSocketException

[英]Spring boot mongo mongoSocketException

我正在為我的 rest api 使用 spring boot,但我有一個關於 mongo 數據庫的問題。 當觸發需要 mongo 操作的端點時,應用程序有時會拋出 mongo 套接字異常並且不執行以下代碼。 我將 true 分配給 socketkeepalive 的值,但它確實解決了我的問題。 我怎樣才能擺脫這個問題,你能給我提供合適的 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
  1. Spring Boot有一個叫做“自動配置”的特性。 在這種情況下,一旦在類路徑上檢測到 Mongo 驅動程序,就會使用指向localhost:27017的默認值激活MongoAutoConfiguration 如果您不想要這種行為,您現在可以配置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

請告訴我您的配置文件或屬性文件。

在 docker 堆棧中運行 mongo 時遇到同樣的問題,我只是錯過了從 27017(外部)到 27017(內部)的端口映射,所以應用

    ports:
      - 27017:27017

docker-compose.yml文件對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM