Vert.x Native, MongoClient
Для настройки mongo db вы можете обратиться к предыдущим руководствам D10077 — Reference, Mongo Setup , чтобы узнать больше деталей. В этой главе мы вернёмся к нулевой системе, чтобы увидеть, как включить Vert.x native client для mongo db.
Демо-проекты:
Эта глава дублируется с D10073 — Configuration, vertx-mongo.yml, поскольку это подготовительные шаги для клиента mysql.
zero:
lime: mysql, mongo
vertx:
instance:
- name: vertx-zeus
options:
maxEventLoopExecuteTime: 30000000000
mongo: io.vertx.mod.plugin.mongo.MongoInfix
Все конфигурации mongo помещаются в vertx-mongo.yml
в корневой узел mongo
, как показано ниже:
mongo:
db_name: ZERO_MESH
port: 6017
host: 127.0.0.1
connection_string: mongodb://localhost:6017
username: zero_mongo
password: zero_mongo
Вся вышеуказанная конфигурация поддерживается для нативной конфигурации mongo, но для проекта up-gaea
требуется некоторая дополнительная конфигурация (конфигурация сервера).
server:
- name: up-gaea
type: http
config:
port: 6073
host: 0.0.0.0
Наконец, когда вы закончите настройку, структура папок проекта должна быть следующей:
package up.god.micro.mongo;
import io.vertx.core.json.JsonObject;
import io.vertx.up.annotations.Address;
import io.vertx.up.annotations.EndPoint;
import jakarta.ws.rs.BodyParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@EndPoint
@Path("/api")
public interface MongoApi {
@Path("native/test")
@POST
@Address("ZERO://QUEUE/NATIVE/MONGO")
JsonObject sayMongo(@BodyParam JsonObject params);
}
package up.god.micro.mongo;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.mongo.MongoClient;
import io.vertx.up.unity.Ux;
import io.vertx.up.annotations.Address;
import io.vertx.up.annotations.Queue;
import io.vertx.up.commune.Envelop;
import jakarta.inject.infix.Mongo;
@Queue
public class MongoWorker {
@Mongo
private transient MongoClient client;
@Address("ZERO://QUEUE/NATIVE/MONGO")
public void sayMongo(final Message<Envelop> message) {
final JsonObject data = Ux.getJson(message);
this.client.insert("DB_TEST", data, res -> {
if (res.succeeded()) {
System.out.println(res.result());
message.reply(Ux.to(data));
} else {
res.cause().printStackTrace();
message.reply(Envelop.ok());
}
});
}
}
Когда вы запустили приложение, вы должны увидеть следующий вывод:
......
Cluster created with settings {hosts=[localhost:6017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Opened connection [connectionId{localValue:1, serverValue:5}] to localhost:6017
Monitor thread successfully connected to server with description ServerDescription{address=localhost:6017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 6, 2]}, minWireVersion=0, maxWireVersion=6, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=5597013}
......
Затем вы можете протестировать с помощью postman: URL: http://localhost:6073/api/native/test Метод: POST Запрос:
{
"username":"Lang",
"password":"xxxxxxijnuhb123",
"email":"lang.yu@email.com"
}
Ответ:
{
"data": {
"username": "Lang",
"password": "xxxxxxijnuhb123",
"email": "lang.yu@email.com",
"_id": "5a8011506b0f4bc139b3f6ce"
}
}
Здесь эта запись была добавлена в mongo. База данных, вы можете проверить результат из mongo db:
Запись — это то, что вы добавили в запросе.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )