Если необходимо выполнить вызов сервиса, то в классе запуска необходимо добавить аннотацию @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")
Можно использовать 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.
Аннотацию 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 )