SpringCloud - リモート呼び出しを装う 2

CSDN トピック チャレンジ フェーズ 2
参加トピック:調査ノート

画像の説明を追加してください
個人名刺:

ブロガーアルコール依存症ᝰ。
個人プロフィール:ワインに酔いしれ、お酒で未来を切り拓く。
この記事は感動的です: 3 人が歩いて、私の先生がいるに違いありません。

画像の説明を追加してください
このプロジェクトは、ステーション B Java のダークホース プログラマー「SpringCloud Microservice Technology Stack」に基づいており、SpringCloud+RabbitMQ+Docker+Redis+search+distributed

[SpringCloud+RabbitMQ+Docker+Redis+search+distributed, システム詳細 springcloud マイクロサービス テクノロジー スタック コース|ダーク ホース プログラマー Java マイクロサービス]クリックして視聴

1. Feign は RestTemplate を置き換えます

クリックして表示

2. ログの設定

1. ログレベル

NONE:ログなし
BASIC:リクエストメソッド、URL、レスポンスステータスコード、実行時間
HEADERS:リクエストメソッド、URL、レスポンスステータスコード、実行時間、リクエストヘッダ、レスポンスヘッダ
FULL:リクエスト、レスポンスのヘッダ、ボディ、メタデータをほぼ記録すべての情報

2. 方法 1: 構成ファイルによる方法

  1. グローバルに有効にする
feign:
  client:
    config:
      default:
        logger-level: Full
  1. 局所効果
feign:
  client:
    config:
      userservice: # 服务名名称
        logger-level: Full

3. 方法 2: Java コードによる方法

  1. DefaultFeignConfiguration クラスが作成される構成モジュール config を作成します。
package cn.itcast.order.config;

import feign.Logger;
import org.springframework.context.annotation.Bean;

public class DefaultFeignConfiguration  {
    
    
    @Bean
    public Logger.Level feignLogLevel(){
    
    
        return Logger.Level.FULL; // 日志级别为
    }
}


  1. グローバル構成

スタートアップクラスでは、天国は次のように注釈されています

@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class) //全局生效
  1. ローカル構成

次の注釈をコントローラー クラスに追加します。値はサービス名です。

@FeignClient(value = "userservicec" , configuration = DefaultFeignConfiguration.class) // 局部生效

3. パフォーマンスの最適化

方法: 接続プールを使用 (ここでは Apache HttpClient を使用)

  1. 依存関係のインポート
<!--HttpClient的依赖-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>
  1. 接続プールを構成する (application.yml)
feign:
  httpclient:
    enabled: true
    max-connections: 200
    max-connections-per-route: 50

推奨事項: ログ レベルには basic または none を使用します

4. ベスト プラクティス

1.継承

コードの結合度が高い場合は、統一された親インターフェイスを定義し、このインターフェイスを継承します。

2.抽出

1.手順

FeignCLient を別のモジュールとして抽出する

  1. feign-api という名前の新しいモジュールを作成します。
  2. 偽の依存関係を導入する
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
</dependencies>
  1. クライアント、構成、pojo モジュールを feign-api モジュールに移動します。

画像.png

  1. order-service に feign-api 依存関係をインポートする
 <!--feign-api依赖-->
<dependency>
  <groupId>cn.itcast.demo</groupId>
  <artifactId>feign-api</artifactId>
  <version>1.0</version>
</dependency>
  1. order-service の上記 3 つのモジュールに関するインポートを、feign-api のパッケージに変更します。
  2. テストを再開する

2.例外

再起動時に次の例外が発生します:
cn.itcast.order.service.OrderService のフィールド userClient には、見つからないタイプ 'cn.itcast.feign.clients.UserClient' の Bean が必要でした。

画像.png

理由:
FeignClients は、パッケージをスキャンするスタートアップ クラス @SpringBootApplication の範囲内にありません
解決策:
方法 1: FeignClients が配置されているパッケージを指定します

@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class, basePackages = "cn.itcast.feign.clients") //全局生效

方法 2: FeignClients バイトコードを指定する

@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class, clients = UserClient.class)

おすすめ

転載: blog.csdn.net/m0_65144570/article/details/127138958