【发布时间】:2018-12-29 18:17:55
【问题描述】:
我正在学习java和Spring boot 2
所以我的问题是:
2018-07-09 11:40:24.816 INFO 20196 --- [localhost:27017] org.mongodb.driver.cluster: Exception in monitor thread while connecting to server localhost:27017
com.mongodb.MongoSocketOpenException: Exception opening socket at com.mongodb.connection.SocketStream.open(SocketStream.java:62) ~[mongo-java-driver-3.6.4.jar:na]
at com.mongodb.connection.InternalStreamConnection.open (InternalStreamConnection.java:126) ~[mongo-java-driver-3.6.4.jar:na]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run (DefaultServerMonitor.java:114) ~[mongo-java-driver-3.6.4.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_171] Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_171]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_171]
at java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:206) ~[na:1.8.0_171]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_171]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_171]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_171]
at com.mongodb.connection.SocketStreamHelper.initialize (SocketStreamHelper.java:59) ~[mongo-java-driver-3.6.4.jar:na]
at com.mongodb.connection.SocketStream.open(SocketStream.java:57) ~[mongo-java-driver-3.6.4.jar:na]
... 3 common frames omitted
2018-07-09 11:40:25.164 INFO 20196 --- [ main] org.mongodb.driver.cluster: Cluster description not yet available. Waiting for 30000 ms before timing out
因此,当 Spring Boot 2 是 Maven 构建应用程序时,由于缺少 MongoDB 服务器并尝试连接 3 次超时 30000 毫秒,它卡住了,然后卡住了......
所以我想初始化这个连接,在完成 Maven 构建之后,从运行时使用外部配置参数,然后使用 @shedules 监控检查 MongoDB 是否处于活动状态,如果丢失则重新连接。
我发现的 SQL 不包括 topic 的自动配置,但我不知道哪个文件是从 link 配置 MongoDB。也许我必须像@PostConstruct @bean conf文件一样配置它? (如果它存在并且有可能做这个机会,请给我举个例子)
提前谢谢你!
现在我以 db 路由器为例:
@SpringBootApplication(exclude =
{org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration.class
,org.springframework.boot.autoconfigure.data.mongo
.MongoDataAutoConfiguration.class})
public class Application {
从自动配置中排除 2 个文件,为设置我的属性编写了一些类,但我仍然不知道如何延迟连接!
【问题讨论】:
-
与其过度设计解决方案,为什么不添加一个启用/禁用 mongo 自动配置的配置文件。当 mongo 存在时它是否处于活动状态?
-
格式化了 Java 堆栈部分和几个拼写错误。
-
也许你是对的,我尝试按照你的方式进行研究。
-
我尝试了这种方式,但是mongorepository想要创建独立于应用程序是否连接的bean还有另一个问题。然后将连接异常的嵌套异常的所有应用程序原因粉碎到mongo db
标签: java mongodb maven spring-boot spring-mongodb