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

OSCHINA-MIRROR/windoze-vertx-kotlin-rpc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.cn.md 2.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 15:56 65163c3

Вызов RPC service в Java

Вызов RPC service в Java: вызов RPC service

В Java нет функции suspend, поэтому каждый метод в интерфейсе сервиса должен возвращать Future, а не T.

import io.vertx.core.Future;
import static codes.unwritten.vertx.kotlin.rpc.ServiceProxyFactory.getAsyncServiceProxy;

// ...

interface AsyncHelloSvc {
    Future<String> hello(String world);
}

AsyncHelloSvc svc = getAsyncServiceProxy(vertx, "test-channel", "hello", AsyncHelloSvc.class);
svc.hello("world").setHandler(ar -> {
    if (ar.succeeded()) {
        assertEquals("Hello, world!", ar.result());
    } else {
        // Обработка ошибок
    }
});

Создание HTTP RPC service в Java

(пропущено)

Вызов HTTP RPC service в Java

В Java нет функции suspend, поэтому каждый метод в интерфейсе сервиса должен возвращать Future, а не T.

import io.vertx.core.Future;
import static codes.unwritten.vertx.kotlin.rpc.AsyncServiceProxyFactory.getAsyncHttpServiceProxy;

// ...

interface AsyncHelloSvc {
    Future<String> hello(String world);
}

AsyncHelloSvc svc = getAsyncHttpServiceProxy(vertx, "http://127.0.0.1:8080/some-path", "hello", AsyncHelloSvc.class);
svc.hello("world").setHandler(ar -> {
    if (ar.succeeded()) {
        assertEquals("Hello, world!", ar.result());
    } else {
        // Обработка ошибок
    }
});
  • Примечания:

— JSON RPC использует Jackson для сериализации и десериализации. — Все остальные параметры и возвращаемые значения сериализуются и десериализуются с помощью Kryo. Подробнее см. в документации. — Java Reflection API не может получить имена параметров метода, а это необходимо для JSON RPC, поэтому JSON RPC пока не поддерживает Java. Если у вас есть идеи, пожалуйста, сообщите мне.

  • Задачи:

— Поддержка перегрузки методов. — Отслеживание вызовов RPC. — Поддержка параметров пути в JSON RPC.

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

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

1
https://api.gitlife.ru/oschina-mirror/windoze-vertx-kotlin-rpc.git
git@api.gitlife.ru:oschina-mirror/windoze-vertx-kotlin-rpc.git
oschina-mirror
windoze-vertx-kotlin-rpc
windoze-vertx-kotlin-rpc
master