是否有人尝试将MongoDB Atlas数据库用作Vertx服务(https://www.mongodb.com)?
我已尝试连接,但我一直收到以下错误:
INFO: Exception in monitor thread while connecting to server socie-shard-00-01-zeymc.mongodb.net:27017
com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at com.mongodb.connection.AsynchronousSocketChannelStream$BasicCompletionHandler.completed(AsynchronousSocketChannelStream.java:215)
at com.mongodb.connection.AsynchronousSocketChannelStream$BasicCompletionHandler.completed(AsynchronousSocketChannelStream.java:201)
at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281)
at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579)
at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397)
at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我使用了以下内容:
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-mongo-client</artifactId>
<version>3.5.0</version>
</dependency>
比我尝试使用他们的Java Mongo驱动程序:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.6.0</version>
</dependency>
这很有效。只有这会对我的所有查询进行大量重写。而且我不确定这是否是与Vertx结合使用的好驱动因素。
有没有人知道如何修复上述错误,或者有人知道使用org.mongodb java驱动程序是否安全。
非常感谢提前!
我的解决方案
感谢Daniel,我设法让它与vertx-mongo-client合作!
我添加到我的Json配置
config.put("ssl", true);
我在创建MongoClient之前添加了以下行。
System.setProperty("org.mongodb.async.type", "netty");
答案 0 :(得分:0)
前一段时间遇到过类似的问题,但是让它与官方的vertx mongo客户端合作。我只需要确保提供所有连接信息。 例如:
{
hosts: [
{
host: "xpto-shard-00-00-aaa.mongodb.net",
port: 27017
},
{
host: "xpto-shard-00-01-aaa.mongodb.net",
port: 27017
},
{
host: "xpto-shard-00-02-aaa.mongodb.net",
port: 27017
}
],
replicaSet: "xpto-shard-0",
db_name: "db_name",
username: "username",
password: "password",
ssl: true,
authSource: "admin",
maxPoolSize: 30,
minPoolSize: 5,
waitQueueMultiple : 100
}
另外,我必须确保设置系统属性:
var System = Java.type("java.lang.System");
System.setProperty("org.mongodb.async.type", "netty");
(这个Verticle在Javascript中,但它在Java中几乎相同)