SpringCloudの初入江湖-Feign実現サービス間の呼び出し


SpringCloudの初入江湖-Feign実現サービス間の呼び出し

  • Feign概要
  • クイック体験
  • 1)tensquare_qaモジュール追加依存
  • 2)tensquareを修正するqaモジュールの起動クラス、注釈
  • を追加
  • 3)tensquare_qaモジュールはcomを作成する.tensquare.qa.Clientパッケージ、パッケージの下にインタフェース
  • を作成
  • 4)tensquareを修正するqaモジュールのProblemController
  • 5)テスト
  • 負荷等化
  • Feignの概要


    FeignはJava HTTPクライアントの開発を簡略化するツール(java-to-httpclient-binder)であり、そのインスピレーションはRetrofit、JAXRS-2.0、WebSocketから来ている.Feignの初志は,restfulであるか否かを区別せずにDenominatorからHTTP APIへの統合バインドの複雑さを低減することである.

    迅速な体験


    私たちは今、クイズマイクロサービスでベースマイクロサービスを呼び出す方法(IDに基づいてラベルを照会)を行います.

    1)tensquare_qaモジュール依存性の追加

            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-client
            
    

    2)tensquare_の修正qaモジュールの起動クラス、注釈の追加

    @EnableEurekaClient
    @EnableDiscoveryClient
    
    package com.tensquare.qa;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    import org.springframework.context.annotation.Bean;
    import util.IdWorker;
    import util.JwtUtil;
    
    @SpringBootApplication
    @EnableEurekaClient
    @EnableDiscoveryClient
    @EnableFeignClients
    public class QaApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(QaApplication.class, args);
    	}
    	@Bean
    	public IdWorker idWorkker(){
    		return new IdWorker(1, 1);
    	}
    	@Bean
    	public JwtUtil jwtUtil(){
    		return new JwtUtil();
    	}
    }
    

    3)tensquare_qaモジュールはcomを作成する.tensquare.qa.Clientパッケージ、パッケージの下にインタフェースを作成

    package com.tensquare.qa.client;
    
    import com.tensquare.qa.client.impl.BaseClientImpl;
    import entity.Result;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @FeignClient(value = "tensquare-base")
    public interface BaseClient {
        @RequestMapping(value = "/label/{labelId}", method = RequestMethod.GET)
        public Result findById(@PathVariable("labelId") String labelId);
    }
    

    説明:1)@FeignClient注記は、どのサービスから機能を呼び出すかを指定するために使用されます.名前は呼び出されたサービス名と一致し、下線は含まれません.2)@RequestMapping注記は、呼び出されたマイクロサービスをアドレスマッピングするために使用される.注意@PathVariable注記パラメータ名を指定する必要があります.そうしないとエラーが発生します.

    4)tensquare_の修正qaモジュールのProblemController

    	@Autowired
    	private BaseClient baseClient;
    
    	@RequestMapping(value = "/label/{labelId}", method = RequestMethod.GET)
    	public Result findByLabelId(@PathVariable String labelId){
    		Result result = baseClient.findById(labelId);
    		return result;
    	}
    

    5)テスト


    http://192.168.2.10:9003/problem/label/1ラベルが見える情報
    {"flag":true,"code":20000,"message":" ","data":{"id":"1","labelname":"java","state":"1","count":null,"fans":null,"recommend":null}}
    

    ふかへいこう


    テスト:複数のベースマイクロサービスを同時に開き、順番に呼び出されるかどうかを確認します.tensquareの変更ベースエンジニアリングLabelControllerのfindByIdメソッド
        @RequestMapping(value = "/{labelId}", method = RequestMethod.GET)
        public Result findById(@PathVariable("labelId") String id){
            System.out.println("NO.1");
            Label label = labelService.findById(id);
            return new Result(true,StatusCode.OK, " ", label);
        }
    

    ベースマイクロサービスを起動した後、ポートと出力情報を修正し、ベースマイクロサービスを再起動してクイズマイクロサービスを起動し、ブラウザで実行する.http://192.168.2.10:9003/problem/label/1順番に起動するかどうかを見ます.