SpringCloud Feign REST客户端进行服务调用

在本节中,我们将从 Feign 流行的Spring Cloud组件之一开始。

Feign

Feign是由 Netflix 开发的声明性Web服务(HTTP客户端)。其目的是简化HTTP API客户端。它是Java到HTTP客户端绑定程序。如果要使用Feign,请创建一个接口并对其进行注释。它提供可插入注释支持,包括Feign注释和JAX-RS注释。

它是用于创建REST API客户端的库。它使Web服务客户端更容易。开发人员可以使用声明性注释来调用REST服务,而不用编写代表性的样板代码。

 

Spring Cloud OpenFeign

Spring Cloud OpenFeign 通过自动配置并绑定到Spring Environment为Spring Boot应用程序提供OpenFeign集成。没有Feign,在Spring Boot应用程序中,我们使用 RestTemplate 来调用User服务。要使用Feign,我们需要在pom.xml文件中添加 spring-cloud-starter-openfeign 依赖项。

让我们使用Spring Cloud OpenFeign简化以前开发的代码。

当我们使用微服务时,将会有很多对其他服务的调用。我们不必像上一个那样编写代码。伪装是解决此问题的组件。 Feign使调用其他微服务变得容易。

Feign提供的另一项附加功能是: 它与 Ribbon (客户端负载平衡框架)集成。

让我们在我们的项目中实现Feign并使用Feign调用其他微服务。

步骤1: 选择 currency-conversion-service 项目。

步骤2: 打开 pom.xml 并添加 Feign 依赖性。 Feign继承自 Netflix

<dependency>
<groupId>org.springframework.cloud</groupId>  
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>

步骤3: 添加依赖项后, 启用 Feign,以通过在< @EnableFeignClients 来扫描客户端。 strong> CurrencyConversionServiceApplication.java 文件。 中添加注释

步骤4: @EnableFeignClients 注释中定义属性。该属性是我们要扫描的软件包的名称。

CurrencyConversionServiceApplication.java

package com.codebaoku.microservices.currencyconversionservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients("com.codebaoku.microservices.currencyconversionservice")
public class CurrencyConversionServiceApplication 
{
public static void main(String[] args) 
{
SpringApplication.run(CurrencyConversionServiceApplication.class, args);
}
}

我们已在项目中启用了Feign。现在,我们将使用Feign来调用服务。

步骤5: 创建一个 Feign代理,使我们能够与外部微服务进行对话。让我们创建一个名称为 CurrencyExchangeServiceProxy的接口。

步骤6: 添加注释 @FeignClient。 传递属性 name URL

name 属性中,输入服务的名称我们将要消耗的。在我们的案例中,我们将使用 currency-exchange-service 。在 URL 属性中,编写运行货币兑换服务的端口。

@FeignClient(name="currency-exchange-service", url="localhost:8000")

步骤7: 现在,我们需要定义一种与 currency-exchange-controller 对话的方法。打开 Currency-ConverterController.java 文件。复制 currency-converter 映射并将其粘贴到同一文件中。

步骤8: 将映射名称更改为 /currency-converter -feign/from/{from}/to/{to}/quantity/{quantity} ,并将方法名称更改为 convertCurrencyFeign。

步骤9 : 使用 CurrencyExchangeServiceProxy 并自动连线。

@Autowired
private CurrencyExchangeServiceProxy proxy;

步骤10: 首先,通过调用URLcurrency-exchange-service /from/USD/to/INR" target ="_blank"> http://localhost:8000/currency-exchange/from/USD/to/INR 之后,运行 currency-conversion-service 通过使用URL http://localhost:8100/currency-converter/from/USD/to/INR/quantity/1000 。

如果我们未按顺序运行服务,则货币兑换服务会显示 Whitelabel错误页面。这是因为使用currencyexchange-service的conversionMultiple。

步骤11: 使用URL http://localhost:8100/currency-converter-feign/from/USD/to/INR/quantity/1000 。它返回与currency-converter-service相同的响应。

使用Feign REST用于服务调用的客户端

在上述URL中将货币 USD 更改为 EUR ,然后再次调用相同的URL。它从货币兑换服务中获取变量 " from" ,并返回 总计算金额。

使用Feign REST客户端进行服务调用

我们发送的请求使用 伪装。 Feign是REST服务客户端。 Feign可以轻松调用RESTful Web服务。当我们使用RestTemplate调用RESTful服务时,它将创建与RESTful服务对话的代码的 duplication

定义Feign时,我们只需定义一个代理并定义单一方法。 Feign帮助我们简化了与RESTful Web服务进行通信的客户端代码。

请考虑一种方案,在该方案中,货币兑换服务提供了15种不同的服务。与这些服务有关的所有详细信息都必须在 CurrencyExchangeServiceProxy 接口的一个地方定义。

Netflix RibbonNetflix Ribbon是 Netflix开源软件的一部分(Netflix OSS)。它是一个提供 客户端负载均衡的云库。由于它是Netflix家族的成员,它会自动与 N ...