ホームページ  >  記事  >  Java  >  Spring Cloud2.0 学習ノート ふり練習

Spring Cloud2.0 学習ノート ふり練習

无忌哥哥
无忌哥哥オリジナル
2018-07-20 12:02:453370ブラウズ

背景

  • springCloud:Finchley.RELEASE

はじめに

FeignはSpring Cloudシステムの宣言型Restクライアントであり、簡単な設定、インターフェースの作成、および注釈。そして SpringMvc のサポートを開始します。

簡単なアプリケーション

  • 依存: org.springframework.cloud:spring-cloud-starter-openfeign

  • 入り口に @EnableFeignClients アノテーションを追加

  • 対応するインターフェースを作成してアノテーションを追加

りー

サーキット ブレーカーのフェーンを有効にするデバイスとコンテキストのサポート

  • feign.hystrix.enabled=true

//入口类
@SpringBootApplication
@EnableFeignClientspublic class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
//原型接口声明
@FeignClient("stores")public interface StoreClient {
    @RequestMapping(method = RequestMethod.GET, value = "/stores")
    List<Store> getStores();    
    @RequestMapping(method = RequestMethod.POST, value = "/stores/{storeId}", consumes = "application/json")
    Store update(@PathVariable("storeId") Long storeId, Store store);
}

サーキット ブレーカーのコールバック

サーキット ブレーカーは、サーキット ブレーカーが停止したときにコールバック定義を実行する方法であるフォールバックをサポートします。オンになるか、インターフェースでエラーが発生すると、事前に定義された良好な結果に戻ります。 コールバックのサポートを有効にするには、@FeignClient アノテーションのフォールバック パラメーターをインターフェイスのコールバック実装クラスになるように構成するだけで済みます。また、コールバック実装クラスには Spring Bean としてアノテーションが付けられている必要があります (@Component、@Service を通じて実装できます)。およびその他のアノテーションについては、詳細については Spring 4 のアノテーションのドキュメントを参照してください)。

# To disable Hystrix in Feignfeign:
  hystrix:
    enabled: true# To set thread isolation to SEMAPHORE# 将断路器隔离级别由默认的线程隔离调整为信号灯hystrix:
  command:    default:
      execution:
        isolation:
          strategy: SEMAPHORE

ロールバックの理由を知りたい場合は、ロールバックファクトリーを使用できます。コード例は次のとおりです:

@FeignClient(name = "hello", fallback = HystrixClientFallback.class)
protected interface HystrixClient {
    @RequestMapping(method = RequestMethod.GET, value = "/hello")
    Hello iFailSometimes();
}

@Componentstatic class HystrixClientFallback implements HystrixClient {
    @Override    
    public Hello iFailSometimes() {        
        return new Hello("fallback");
    }
}

Feignはインターフェースの継承をサポートしており、操作はインターフェースを通じて形成されます。契約を結ぶこと。

@FeignClient(name = "hello", fallbackFactory = HystrixClientFallbackFactory.class)
protected interface HystrixClient {
    @RequestMapping(method = RequestMethod.GET, value = "/hello")
    Hello iFailSometimes();
}

@Componentstatic class HystrixClientFallbackFactory implements FallbackFactory<HystrixClient> {
    @Override    public HystrixClient create(Throwable cause) {        
        return new HystrixClient() {
            @Override            
            public Hello iFailSometimes() {                
                return new Hello("fallback; reason was: " + cause.getMessage());
            }
        };
    }
}

圧縮サポート

圧縮を有効にすると、ネットワーク リソースを効果的に節約できますが、CPU 負荷が増加します。最小圧縮ドキュメント サイズを適切に増やすことをお勧めします

//生产者的控制层接口public interface UserService {

    @RequestMapping(method = RequestMethod.GET, value ="/users/{id}")
    User getUser(@PathVariable("id") long id);
}
//生产者的控制器实现
@RestController
public class UserResource implements UserService {}
//消费端的Feign接口定义
package project.user;
@FeignClient("users")
public interface UserClient extends UserService {}

ログ設定

コンシューマのインターフェイスが含まれるパッケージ。サービスはデバッグである必要があります
  • //开启压缩
    feign.compression.request.enabled=true
    feign.compression.response.enabled=true
    
    //配置压缩文档类型及最小压缩的文档大小
    feign.compression.request.mime-types=text/xml,application/xml,application/json
    feign.compression.request.min-request-size=2048

カスタム構成クラスを定義し、ログレベルを定義します
  • # 日志支持logging.level.project.user.UserClient: DEBUG

ログレベル

  • NONE、ログなし(デフォルト)。
      ベーシック、リクエストのメソッドと URL、レスポンスのステータス コードと実行時間のみをログに記録します。
    • HEADERS、リクエストとレスポンスのヘッダーとともに基本情報をログに記録します。
    • FULL、両方のリクエストのヘッダー、本文、メタデータをログに記録します。と応答。

以上がSpring Cloud2.0 学習ノート ふり練習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。