1

有没有人尝试将 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");
4

1 回答 1

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中几乎相同)

于 2017-12-12T15:59:40.637 回答