顶点到 mongoDB 个连接
Vertx to mongoDB connections
我正在开发一个后端为 MongoDB 的 Java/vertx 项目(我以前使用 Elixir/Erlang 有一段时间了,我对 vertx 很陌生,但是我相信这是最合适的)。基本上,我有一个由一些 HttpServerVerticles
处理的 http API 需要将数据存储到 mongo 数据库(或从中检索数据)并将适当的回复发送到 [=34= 】 来电者。我正在寻找正确的模式来实现查询和处理回复。
从官方指南和一些教程中,我看到对于关系JDBC数据库,有必要定义一个专用的verticle来异步处理查询。这是我第一次尝试 mongo 客户端,但它引入了很多样板文件。
另一方面,从 mongo 客户端文档中我了解到它是 完全非阻塞的 并且它有自己的 连接池。这是否意味着我们可以 安全地 (从 vertx 事件循环的角度来看),直接在 http verticle 中定义和使用 mongo 客户端?
是否有其他模式?
版本:vertx:3.5.4 / mongodb:4.0.3
是这样的:mongo 连接池与 SQL-db 池完全一样,本质上是同步和阻塞的,但是用非阻塞包装 vert.x API 大约。
所以,而不是
的正常阻塞方式
JsonObject obj = mongo.get( someQuery )
你有一个开箱即用的非阻塞调用:
mongo.findOne( 'collectionName', someQuery ){ AsyncResult<JsonObject> res ->
JsonObject obj = res.result()
doStuff( obj )
}
这意味着,您可以安全地直接在任何类型的 Verticle 的 事件循环 上使用它,而无需重新发明异步轮一遍又一遍。
在我们的客户端,我们使用 mongodb-driver-rx
。 Vertx 支持 RX (vertx-rx-java
) 并且非常适合 mongodb-driver-rx
.
有关详细信息,请参阅:
https://mongodb.github.io/mongo-java-driver-rx/
https://vertx.io/docs/vertx-rx/java/
https://github.com/vert-x3/vertx-examples/blob/master/rxjava-2-examples/src/main/java/io/vertx/example/reactivex/database/mongo/Client.java
我正在开发一个后端为 MongoDB 的 Java/vertx 项目(我以前使用 Elixir/Erlang 有一段时间了,我对 vertx 很陌生,但是我相信这是最合适的)。基本上,我有一个由一些 HttpServerVerticles
处理的 http API 需要将数据存储到 mongo 数据库(或从中检索数据)并将适当的回复发送到 [=34= 】 来电者。我正在寻找正确的模式来实现查询和处理回复。
从官方指南和一些教程中,我看到对于关系JDBC数据库,有必要定义一个专用的verticle来异步处理查询。这是我第一次尝试 mongo 客户端,但它引入了很多样板文件。
另一方面,从 mongo 客户端文档中我了解到它是 完全非阻塞的 并且它有自己的 连接池。这是否意味着我们可以 安全地 (从 vertx 事件循环的角度来看),直接在 http verticle 中定义和使用 mongo 客户端?
是否有其他模式?
版本:vertx:3.5.4 / mongodb:4.0.3
是这样的:mongo 连接池与 SQL-db 池完全一样,本质上是同步和阻塞的,但是用非阻塞包装 vert.x API 大约。
所以,而不是
的正常阻塞方式JsonObject obj = mongo.get( someQuery )
你有一个开箱即用的非阻塞调用:
mongo.findOne( 'collectionName', someQuery ){ AsyncResult<JsonObject> res ->
JsonObject obj = res.result()
doStuff( obj )
}
这意味着,您可以安全地直接在任何类型的 Verticle 的 事件循环 上使用它,而无需重新发明异步轮一遍又一遍。
在我们的客户端,我们使用 mongodb-driver-rx
。 Vertx 支持 RX (vertx-rx-java
) 并且非常适合 mongodb-driver-rx
.
有关详细信息,请参阅: https://mongodb.github.io/mongo-java-driver-rx/ https://vertx.io/docs/vertx-rx/java/ https://github.com/vert-x3/vertx-examples/blob/master/rxjava-2-examples/src/main/java/io/vertx/example/reactivex/database/mongo/Client.java