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

OSCHINA-MIRROR/silentbalanceyh-vertx-zero

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

Пример запроса

В этом документе описывается простейший Rpc-поток в системе zero. Пожалуйста, обратитесь к следующим рисункам:

1. Originator

В вашем originator вы можете написать код следующим образом:

import io.vertx.core.json.JsonObject;
import io.vertx.up.annotations.EndPoint;
import io.vertx.up.annotations.Ipc;

import jakarta.ws.rs.BodyParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;

@EndPoint
@Path("/cronus")
public class SpeakApi {

    @Path("/forward")
    @POST
    @Ipc(to = "IPC://EVENT/ADDR", name = "ipc-coeus")
    public JsonObject ipc(@BodyParam final JsonObject data) {
        System.out.println(data);
        return data;
    }
}

2. Terminator

Вы должны убедиться, что текущее имя терминатора — «ipc-coeus» в vertx-server.yml, как показано ниже:

- name: ipc-coeus
  type: ipc
  config:
    port: 6884
    host: 0.0.0.0

Затем вы можете написать следующий код:

import io.vertx.up.annotations.Ipc;
import io.vertx.up.commune.Envelop;

public class SpeakWorker {

    @Ipc(value = "IPC://EVENT/ADDR")
    public String send(final Envelop envelop) {
        final JsonObject data = envelop.data(JsonObject.class);
        data.put("role", "Terminator");
        return data.encode();
    }
}

*: Убедитесь, что атрибут «to» в Originator совпадает со значением «value» в Terminator.

3. Start Up

На консоли coeus вы должны увидеть следующее:

[ Up Rpc   ] <Application Name> = "zero-istio",
[ Up Rpc   ] Configuration Rpc Point = /zero/zero-istio/ipc/routes/ipc-coeus:10.0.0.7:6884, 
[ Up Rpc   ] Service Name = ipc-coeus,
[ Up Rpc   ] Ipc Channel = grpc://10.0.0.7:6884
[ Up Rpc   ] Ipc Address = 
[ Up Rpc √ ]     IPC://EVENT/ADDR
[ Up Rpc   ] √ Successfully to registered IPCs, wait for community......SUCCESS √

Тогда на консоли cronus вы должны увидеть следующее:

[ Up Micro ] <Application Name> = "zero-istio",
[ Up Micro ] Configuration Path = /zero/zero-istio/endpoint/routes/up-cronus:10.0.0.7:6083, 
[ Up Micro ] Service Name = up-cronus,
[ Up Micro ] EndPoint = http://10.0.0.7:6083
[ Up Micro ] Route Uris = 
[ Up Micro ]     /cronus/direct
[ Up Micro ]     /cronus/forward
[ Up Micro ] √ Successfully to registered Routes, wait for discovery......SUCCESS √

4. Send request

Отправьте запрос на http://10.0.0.7:6083/cronus/forward, вы должны увидеть следующий вывод:

Тело запроса:

{
  "username":"lang.yu",
  "password":"173AFAD5992A3F73A472FC09B05B1FB7"
}

Ответное тело:

{
    "data": {
        "username": "lang.yu",
        "password": "173AFAD5992A3F73A472FC09B05B1FB7",
        "role": "Terminator"
    }
}

Таким образом, эти две службы взаимодействуют, и вторая служба помещает значение «Terminator» в ключ «role». Поток запросов в zero должен быть следующим (up-coeus / up-cronus — это две разные микрослужбы):

  1. Запрос клиента -> (Originator) Служба = up-cronus
  2. (Originator) -> (Terminator) Служба = up-coeus, Ipc = ipc-coeus
  3. (Terminator) -> Вызов метода для помещения role=Terminator в данные
  4. (Terminator) -> Генерация нового ответа -> Запрос клиента

Опубликовать ( 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