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

OSCHINA-MIRROR/ffch-consul-proxy

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Если необходимо выполнить вызов сервиса, то в классе запуска необходимо добавить аннотацию @EnableDiscovery:

package cn.pomit.consulproxy;

import cn.pomit.consul.ConsulProxyApplication;
import cn.pomit.consul.annotation.EnableDiscovery;
import cn.pomit.consul.annotation.EnableServer;
import cn.pomit.consul.annotation.InitConfiguration;
import cn.pomit.consulproxy.config.MailConfiguration;
import cn.pomit.consulproxy.handler.EmailRestHandler;
import cn.pomit.consulproxy.handler.GetTestHandler;
import cn.pomit.consulproxy.handler.PostTestHandler;
import cn.pomit.consulproxy.handler.RibbonRestHandler;

@EnableDiscovery
@EnableServer(handler = { EmailRestHandler.class, RibbonRestHandler.class, GetTestHandler.class,
        PostTestHandler.class })
@InitConfiguration(configurations = { MailConfiguration.class })
public class ConsulApp {
    public static void main(String[] args) {
        ConsulProxyApplication.run(ConsulApp.class, args);
    }
}

Подробнее см. ConsulProxy: вызов сервисов.

Бизнес-логика

Бизнес-логику можно реализовать, наследуя класс AbstractResourceHandler в handler.

Атрибуты внедрения

В handler можно использовать аннотацию Value для внедрения атрибутов:

@Value("api.gateway.kongUrl")
private String apiGatewayKongUrl;

Отображение пути

Для отображения пути в handler можно использовать аннотацию Mapping:

@Mapping("/alarm/gateway")

Несколько конфигурационных файлов (версия V1.1)

Можно использовать server.port в командной строке.

Также можно использовать spring.profiles.active или profiles.active для указания нескольких конфигурационных файлов.

Инициализация конфигурации

Аннотация InitConfiguration размещается в классе запуска и используется для передачи свойств определённому классу для инициализации.

Например:

import cn.pomit.consul.ConsulProxyApplication;
import cn.pomit.consul.annotation.EnableServer;
import cn.pomit.consul.annotation.InitConfiguration;
import cn.pomit.serv.config.DataSourceConfiguration;
import cn.pomit.serv.config.MailConfiguration;
import cn.pomit.serv.handler.AdviceHandler;
import cn.pomit.serv.handler.EmailRestHandler;

@EnableServer(handler = { EmailRestHandler.class,AdviceHandler.class })
@InitConfiguration(configurations = { DataSourceConfiguration.class })
public class ServiceApp {
    public static void main(String[] args) {
        ConsulProxyApplication.run(ServiceApp.class, args);
    }

}

Подробности см. в разделе ConsulProxy: InitConfiguration.

Включение Mybatis

Аннотацию EnableMybatis размещают в классе запуска для загрузки компонента myabtis-proxy, который ускоряет запуск MyBatis.

Подробности см. в разделе ConsulProxy: EnableMybatis.

Включение обнаружения сервисов

Аннотацию EnableDiscovery размещают в классе запуска, чтобы поддерживать регистрацию сервисов в Consul и их вызов. Для балансировки нагрузки используется Ribbon. По умолчанию используется OkHttp для HTTP-запросов, но также можно настроить собственный HTTP-инструмент.

Подробнее см. раздел ConsulProxy: сервисы. Текст запроса представляет собой фрагмент программного кода на языке Java.

Перевод:

ApiGatewayClient.Builder().kongUrl(apiGatewayKongUrl)
        .appKey(apiGatewayAppKey).appSecret(apiGatewayAppSecret).client(HttpClientPrototype.getHttpClient())
        .build();

ApiGatewayService apiGatewayService = new ApiGatewayService(apiGatewayClient);
ResultModel resultModel = apiGatewayService.getAlarmInfo(null);
HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
httpResponseMessage.setResCode(ResCode.OK.getValue());
httpResponseMessage.setResType(ResType.JSON.getValue());
httpResponseMessage.setMessage(JSONObject.toJSONString(resultModel));
return httpResponseMessage;
} catch (Exception e) {
    e.printStackTrace();
    HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
    httpResponseMessage.setResCode(ResCode.OK.getValue());
    httpResponseMessage.setResType(ResType.JSON.getValue());
    httpResponseMessage.setMessage(JSONObject.toJSONString(ResultModel.error("请求API网关失败")));
    return httpResponseMessage;
}
}

@Mapping("/health")
public HttpResponseMessage health(HttpRequestMessage httpRequestMessage) {
HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
httpResponseMessage.setResCode(ResCode.OK.getValue());
httpResponseMessage.setResType(ResType.TEXT.getValue());
httpResponseMessage.setMessage("操作成功!");
return httpResponseMessage;
}

public String getApiGatewayKongUrl() {
return apiGatewayKongUrl;
}

public void setApiGatewayKongUrl(String apiGatewayKongUrl) {
this.apiGatewayKongUrl = apiGatewayKongUrl;
}

public String getApiGatewayAppKey() {
return apiGatewayAppKey;
}

public void setApiGatewayAppKey(String apiGatewayAppKey) {
this.apiGatewayAppKey = apiGatewayAppKey;
}

public String getApiGatewayAppSecret() {
return apiGatewayAppSecret;
}

public void setApiGatewayAppSecret(String apiGatewayAppSecret) {
this.apiGatewayAppSecret = apiGatewayAppSecret;
}

Комментарии ( 0 )

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

Введение

Использование netty + consul для регистрации и переадресации сервисов, вместо громоздкого springcloud + consul. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ffch-consul-proxy.git
git@api.gitlife.ru:oschina-mirror/ffch-consul-proxy.git
oschina-mirror
ffch-consul-proxy
ffch-consul-proxy
master