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

OSCHINA-MIRROR/silentbalanceyh-vertx-zero

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
d10088-micro-stream-sender-agent-to-terminator.md 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 04:28 85b9559

Микропоток, отправитель (агент) и терминатор

В этой главе мы сосредоточимся на режиме потока RPC, в этом режиме мы встретим различные роли (методы), такие как Originator, Coordinator, Terminator и т. д.

1. Сервисы

Http-порт Ipc-порт Имя службы Ipc Проект Роль
6100 up-athena Шлюз API
6301 6311 ipc-epimetheus up-epimetheus Originator
6501 6511 ipc-hecate up-hecate Терминатор

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

Мы представили стиль интерфейса, чтобы игнорировать Actor, он отключён в rpc-коммуникации, это означает, что если вы отправляете rpc-запрос от Отправителя (Агента), вы не можете отправить сообщение внутреннему Потребителю (Рабочему), стиль интерфейса используется в коммуникации между Отправителем и Потребителем.

2.1. SimpleApi (сервис: up-epimetheus)

package up.god.micro.agent;

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

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

@EndPoint
@Path("/api")
public interface SimpleApi {

    @Path("ipc/stream/agent1/{name}")
    @GET
    @Ipc(to = "RPC://IPC/NODE/AGENT1", name = "ipc-hecate")
    JsonObject saySimple(@PathParam("name") String name);
}

2.2. SimpleActor (сервис: up-epimetheus)

package up.god.micro.agent;

import io.vertx.core.json.JsonObject;

public class SimpleActor implements SimpleApi {
    @Override
    public JsonObject saySimple(final String name) {
        return new JsonObject()
                .put("name", name)
                .put("originator", "ipc-epimetheus");
    }
}

2.3. SimpleInsider (сервис: up-hecate)

package up.god.ipc;

import io.vertx.core.json.JsonObject;
import io.vertx.up.annotations.Ipc;
import io.vertx.up.commune.Envelop;

public class SimpleInsider {

    @Ipc("RPC://IPC/NODE/AGENT1")
    public JsonObject saySimple(final Envelop envelop) {
        final JsonObject data = envelop.data();
        return data.put("terminator", "ipc-hecate");
    }
}

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

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

URL: http://localhost:6100/api/ipc/stream/agent1/huan

Метод: GET

Ответ:

{
    "data": {
        "name": "huan",
        "originator": "ipc-epimetheus",
        "terminator": "ipc-hecate"
    }
}

4. Резюме

Из вышеприведённого тестирования вы могли видеть, что RPC между Originator и 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