1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/silentbalanceyh-vertx-zero

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
d10077-vertx-native-mongoclient.md 4.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 04:28 85b9559

Vert.x Native, MongoClient

Для настройки mongo db вы можете обратиться к предыдущим руководствам D10077 — Reference, Mongo Setup , чтобы узнать больше деталей. В этой главе мы вернёмся к нулевой системе, чтобы увидеть, как включить Vert.x native client для mongo db.

Демо-проекты:

  • Standalone — 6073: up-gaea

1. Конфигурация

Эта глава дублируется с D10073 — Configuration, vertx-mongo.yml, поскольку это подготовительные шаги для клиента mysql.

1.1. vertx.yml

zero:
  lime: mysql, mongo
  vertx:
    instance:
    - name: vertx-zeus
      options:
        maxEventLoopExecuteTime: 30000000000

1.2. vertx-inject.yml

mongo: io.vertx.mod.plugin.mongo.MongoInfix

1.3. vertx-mongo.yml

Все конфигурации 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 требуется некоторая дополнительная конфигурация (конфигурация сервера).

2. Конфигурация сервера

vertx-server.yml

server:
- name: up-gaea
  type: http
  config:
    port: 6073
    host: 0.0.0.0

Наконец, когда вы закончите настройку, структура папок проекта должна быть следующей:

3. Исходный код

3.1. Api

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);
}

3.2. Consumer

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());
            }
        });
    }
}

4. Консоль

Когда вы запустили приложение, вы должны увидеть следующий вывод:

......
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}
......

5. Тестирование

Затем вы можете протестировать с помощью 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"
    }
}

6. Резюме

Здесь эта запись была добавлена в mongo. База данных, вы можете проверить результат из mongo db:

Запись — это то, что вы добавили в запросе.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/silentbalanceyh-vertx-zero.git
git@api.gitlife.ru:oschina-mirror/silentbalanceyh-vertx-zero.git
oschina-mirror
silentbalanceyh-vertx-zero
silentbalanceyh-vertx-zero
master