open-feignを使用して分散されたSpringCloudでマイクロサービスを呼び出す方法(サービスがレジストリ[zookeeper、またはnocas]に登録されている必要がある場合)

1.オープンフェイグを導入する

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.インターフェースを作成し、このインターフェースがリモートサービスを呼び出す必要があることをSpringCloudに通知します

  • インターフェイスはこのサービスで記述されています。
  • @FeignClient(value = "")value呼び出されるリモートサービスの名前。
  • @RequestMapping(value = "")valueリモートサービスのメソッドリクエストパス。
  • このインターフェースの意味は、呼び出すサービスとメソッドです。
  • インターフェイスの各メソッドが、どのリモートサービスを呼び出す要求であるかを宣言します
@FeignClient(value = "application.name")
public interface CouponFeignService {
    
    
    @RequestMapping("请求路径")
    // 该名字可以与远程服务不一样
    public R coupons();
}

3.リモートサービスコールを開きます

  • @EnableFeignClientsリモートサービス呼び出しを開き、basePackagesインターフェイスが配置されているパッケージを宣言します(記述する必要はありません)。
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "")
public class MemberApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(MemberApplication.class, args);
    }

}

4.リモートデータを要求する方法は2つあります(ゲートウェイが構成されている場合)。

  • すべてのリクエストがゲートウェイに送信され、ゲートウェイによって対応するサービスに転送されるようにします
  • 上記のようにサービスに直接送信します

5.サービスをリモートで呼び出すプロセス

     * 1 FeignService.saveXXX(XXXTo)
     *      1 SpringCloud 会将这个对象转为json
     *      2 找到对应的微服务,给相应请求/xx/xxx发送请求
     *      将上一步转的jso放在请求位置,发送请求
     *      3 对方服务受到请求,请求体里面有json数据,
     *      @RequestBody XXXEntity xxx 将请求体的json转为XXXEntity
     * 只要json数据模型是兼容的,双方服务无需使用同一个to

おすすめ

転載: blog.csdn.net/JISOOLUO/article/details/105577790
おすすめ