問題タブ [netflix-feign]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - Feign クライアント RequestInterceptor を使用してリクエスト ヘッダーまたはセキュリティ コンテキストを転送する
偽のクライアント RequestInterceptor を使用してリクエスト ヘッダーを転送したいのですが、 内RequestInterceptor.apply
で RequestContextHolder.getRequestAttributes()
はnull
、 is ですSecurityContextHolder.getContext().getAuthentication()
(最終的にはヘッダーの値を取得することもできます)。
これは、Spring-Cloud Brixton にアップグレードする前に機能していました。次のパラメーターに変更すると問題が解決するため、hystrix コマンドをおそらく別のスレッドで実行する必要があります。
さて、必要がなければ、この種のデフォルト値を変更することにあまり熱心ではありません。現在、ヘッダーを転送する別の推奨される方法はありますか?
ありがとう
java - Feign Client での「ボディ パラメータが多すぎます」という例外
Springs Feign Client 機能を使用して、あるマイクロ サービスから別のマイクロ サービスに通信しています。
ここで、呼び出されたサービスは、ファイルと関連する (JSON) オブジェクトを受け入れる REST インターフェイスを公開します。
このインターフェイスは正常に機能しています。別のソースから有効なマルチパート/混合エンティティを送信して、これを確認しました。
次に、他のサービスで、このインターフェイスを使用するように、一致する偽クライアントをセットアップしました。
繰り返しますが、あるサービスから別のサービスへの接続は機能しています。偽のクライアント (複数の部分を使用しないもの) の別の要求インターフェイスでこれを確認しました。
この特定のインターフェイス メソッドを使用して (クライアント) サービスを構築しようとすると、次の例外が発生します。
これを機能させるためにできることはありますか?私が述べたようにRESTインターフェースに到達することは可能であり、さまざまな偽の呼び出しが機能しています。私が間違っていなければ、これはうまくいくはずです。Springs Feign は、feign インターフェイスの multipart/mixed をサポートしていないだけですか?
unit-testing - ユニットテスト用の Eureka Feign クライアントのモック
私はSpring Cloudのeurekaとfeignを使用して、いくつかのサービス間で通信しています(AとBとしましょう)。ここで、単一のサービス (A) のサービス レイヤーを単体テストしたいと思います。問題は、このサービス (A) が偽のクライアントを使用して、他のサービス (B) の情報を要求していることです。
特別な構成なしで単体テストを実行すると、次の例外がスローされます: java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-b
=> しかし、サーバーを実行したくありません。
私の質問は次のとおりです:偽のクライアントをモックする方法はありますか?それで、eureka インスタンスとサービス (B) を実行せずにサービス (A) を単体テストできますか?
編集:偽のクライアント用のスタブを作成しました。スタブは、テスト内でスタブをインスタンス化するスプリングを強制するプライマリ コンポーネントとしてマークされています。
これが私が思いついた解決策です。
spring-mvc - Spring Cloud Netflix : RequestInterceptor を介して FeignClient にホスト リクエスト パラメータを渡す
マルチテナントサポートを追加しようとしている Eureka、Zuul、および FeignClient を使用して Spring Cloud プロジェクト (Spring Boot 1.3.1 を使用した Brixton.M4) を構築しています (テナントはサブドメイン: tenant1.myservice.com で識別されます)。そうするために、Feignを介してサービスから他のサービスに転送されるリクエストに沿って元のサブドメインをどうにかして渡したいのですが、それを行う正しい方法を見つけることができないようです.
私が持っているのは、@ FeignClient を呼び出してバックエンドと通信する @RestController を公開するクライアントです。バックエンドは、独自の @RestController を介してサーバー操作をクライアントに公開します。
サーバー上の @RestController と同じインターフェースを使用する @FeignClient :
私が現在やろうとしているのは、 RequestInterceptor にヘッダーを設定することです:
私のプロバイダー クラスは、リクエスト/セッション スコープ Bean を注入しようとしている単純なコンポーネントです。
Bean(セッションとリクエストスコープの両方を試しました):
サーバーでは、ヘッダー値をキャッチすることになっている Hibernate マルチテナント プロバイダーを使用し、それを使用して接続する DB を定義します。
サーバーへの Feign 呼び出しが別のスレッドで着信要求の範囲外で行われているように見えるため、その値を渡す方法がわかりません。
RequestInterceptor でテナント値をハードコードすると、すべて正常に機能するので、残りが適切に機能していることがわかります。
Zuulの「X-Forwaded-For」ヘッダーに関する他の多くの投稿も見ましたが、サーバーで受信したリクエストでそれを見つけることができません。ホスト名を次のリクエストに渡すためにZuulFilterを追加しようとしましたが、クライアントへの元のリクエストがZuulFilterによって取得され、追加できますが、偽のリクエストがバックエンドサービスに送信された場合でも追加できませんそれを zuul にマップします (それが意図されていると思いますか?)。
次のステップが何であるかはよくわかりませんが、いくつかの提案をいただければ幸いです。
java - スプリング ブートでリボン付きの偽装を使用すると、ヘッダーを解析できません
APIに接続するために、リボンと偽装でいくつかのテストを行っています。API はスプリング ブートを使用して実行されています。
これは、feign インターフェイスを使用した私のクライアント コードです。
私が単独で偽物を使用すると、すべてが機能します:
しかし、リボンも使用する場合:
スプリング ブート サーバーのログに次のエラーが表示されます。
私のスプリングブートアプリで次のヘッダーを受け取っているようです:
私が間違っていることは何ですか?何か不足していますか?