Выпущены компоненты Kill Feign, Spring Cloud Square

Spring Boot Spring Cloud

Что такое Площадь весенних облаков

Когда дело доходит до экосистемы Spring Cloud, все должны быть знакомы с Feign.Как показано на рисунке ниже, Feign может скрывать базовые (okhttp, httpclient) запросы Rest, замаскированные под SpringMVC-подобный контроллер. Вам больше не нужно объединять URL-адреса, параметры и т. д., все остается за Feign. Использование Feign для вызова API похоже на вызов локального метода, что позволяет избежать утомительного постоянного анализа/инкапсуляции данных json при вызове целевого микросервиса.

Spring Cloud Feign 调用

Spring Cloud SquareПроект направлен на замену оригинального Spring Cloud Feign и реализацию вызовов между службами с помощью инкапсуляции базовой библиотеки коммуникационных классов в Retrofit. официально принял на себя Ribbon становится официально рекомендуемым компонентом).

Прежде чем понять Spring Cloud Square, вам необходимо понять следующие компоненты:

  • OkHttp — это сторонняя библиотека классов для сетевых запросов, которая инкапсулирует базовую реализацию операций получения, отправки и других операций сетевых запросов.В настоящее время это одна из самых популярных платформ сетевых запросов.

  • Retrofit — это фреймворк веб-запросов RESTful HTTP,Он основан на OkHttp. Он настраивает сетевые параметры через аннотации, поддерживает парсинг и сериализацию различных данных (Gson, Json, Xml и т. д., а также поддерживает RxJava.

Затем вызов службы на основе Spring Cloud Square можно абстрагировать, как показано на следующем рисунке:

Spring Cloud Square 调用

Начать быстро

1618403200

добавить зависимости

  • Поскольку spring-cloud-square в настоящее время официально не выпущен, вам необходимо настроить репозиторий spring maven.
<repositories>
  <repository>
    <id>spring-milestones</id>
    <url>https://repo.spring.io/milestone</url>
  </repository>
</repositories>
  • maven-зависимости
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-square-okhttp</artifactId>
  <version>${square.version}</version>
</dependency>
<dependency>
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
  <version>${okhttp.version}</version>
</dependency>

<!--添加负载均衡支持-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

Конфигурация кода

@Bean
@LoadBalanced
public OkHttpClient.Builder okHttpClientBuilder() {
    return new OkHttpClient.Builder();
}

код вызова

  • Как и в случае с самыми ранними вызовами ленты, это довольно просто.
@Autowired
OkHttpClient.Builder builder;

@GetMapping
public String req() {
    Request request = new Request.Builder()
            .url("http://square-provider/req").build();
    Response response = builder.build().newCall(request).execute();
    return response.body().string();
}

Расширенное использование

В качестве альтернативы Spring Cloud Feign Square также поддерживает форму декларативного клиента. Обратите внимание, что следующий код пахнет так же, как притворяться

добавить зависимости

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-square-retrofit</artifactId>
  <version>${square.version}</version>
</dependency>

Объявить вызывающего клиента

@RetrofitClient("square-provider")
public interface DemoService {

    @GET("/")
    Call<String> req();
}

Включить сканирование клиента

@EnableRetrofitClients

код вызова

@Autowired
DemoService demoService;

@SneakyThrows
@GetMapping("/retrofit")
public String retrofit(){
    return demoService.req().execute().body();
}

Суммировать

    1. Так как spring-cloud-square реализован напрямую на основе retrofit, общий исходный код очень прост, всем рекомендую его прочитать.
    1. В текущей версии не реализована реализация, связанная с откатом.
    1. Сопутствующий код для этой статьиGitHub.com/теория системы/весна…