SpringCloudの初入江湖-Feign実現サービス間の呼び出し
11611 ワード
SpringCloudの初入江湖-Feign実現サービス間の呼び出し
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順番に起動するかどうかを見ます.