Spring Cloud Netflix スタックでは、各マイクロサービスが HTTP インターフェイスの形式で独自のサービスを公開するため、リモート サービスを呼び出すときに HTTP クライアントを使用する必要があります。 JDK のネイティブ URLConnection、Apache の Http クライアント、Netty の非同期 HTTP クライアント、Spring の RestTemplate を使用できます。ただし、最も便利でエレガントに使用できるのは Feign です。
Feign は、宣言型のテンプレート化された HTTP クライアントです。 Spring Cloud で Feign を使用すると、HTTP を使用してリモート サービスをリクエストするときに、ローカル メソッドを呼び出すのと同じコーディング エクスペリエンスを実現できます。開発者は、HTTP リクエストはおろか、これがリモート メソッドであることをまったく認識しません。
1. 依存関係を追加します
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId> </dependency>
2. FeignClient を作成します
3. スタートアップクラスにアノテーションを追加します
@FeignClient(name="SPRING-PRODUCER-SERVER/spring")public interface FeignUserClient { @RequestMapping( value = "/findAll/{name}",method = RequestMethod.GET) public List<SpringUser> findAll(@PathVariable("name") String name); @RequestMapping( value = "/findUserPost",method = RequestMethod.POST) public SpringUser findUserPost(@RequestBody SpringUser springUser);//复合类型好像默认是POST请求 }
@Configuration @ComponentScan @EnableAutoConfiguration @EnableEurekaClient @EnableFeignClientspublic class SpringConsumerServerFeignApplication {public static void main(String[] args) { SpringApplication.run(SpringConsumerServerFeignApplication.class, args); } }
spring: application: name: spring-consumer-server-feign server: port: 8084 context-path: /spring #服务注册中心的配置内容,指定服务注册中心的位置 eureka: client: serviceUrl: defaultZone: http://user:password@localhost:8761/eureka/
@Configurationpublic class FooConfiguration { @Beanpublic Contract feignContract() {//这将SpringMvc Contract 替换为feign.Contract.Defaultreturn new feign.Contract.Default(); } }
@FeignClient(name="SPRING-PRODUCER-SERVER/spring",configuration=FooConfiguration.class)public interface FeignUserClient { @RequestLine("GET /findAll/{name}")public List<SpringUser> findAll(@Param("name") String name); /* @RequestMapping( value = "/findAll/{name}",method = RequestMethod.GET) public List<SpringUser> findAll(@PathVariable("name") String name); @RequestMapping( value = "/findUserPost",method = RequestMethod.POST) public SpringUser findUserPost(@RequestBody SpringUser springUser);*/}
@RequestLine:是feign的注解 为每个创建的Feign客户端创建一个记录器。默认情况下,记录器的名称是用于创建Feign客户端的接口的完整类名。Feign日志记录仅响应DEBUG级别。logging.level.project.user.UserClient: DEBUG 在配置文件application.yml 中加入:
この設定は、Hystrix のタイムアウトを 5 秒に変更することです方法 2hystrix.command.default.execution.timeout.enabled: false
この設定は、Hystrix のタイムアウトを無効にするために使用されます方法 3
feign.hystrix.enabled: false
この設定は、単に feign の hystrix を無効にするために使用されます。このアプローチは、一部の特殊なシナリオを除いて推奨されません。
りー
以上がFeign of Spring Cloud は HTTP を使用してリモート サービスをリクエストしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。