有没有人尝试将 MongoDB Atlas 数据库作为服务(https://www.mongodb.com)与 Vertx 一起使用?
我已经尝试连接,但我不断收到以下错误:
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");
不久前遇到了类似的问题,但它与官方 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 中几乎相同)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句