問題タブ [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.
java - Feign で @RequestLine を使用する
次のように定義された動作中の Feign インターフェイスがあります。
これを @RequestLine を使用するように変更すると
私は例外を取得します
原因: java.lang.IllegalStateException: メソッド getLinksForTrack に HTTP メソッド タイプのアノテーションが付けられていません (例: GET、POST)
理由はありますか?
spring-cloud - Spring Cloud と Netflix の Eureka と Feign を使用するマイクロサービスを保護する
私は、Spring Cloud と Netflix のスタック、特に Eureka と Feign を使用して、マイクロサービスを構築および実装するための最良の方法を見つけようとしています。それぞれについて、セキュリティ関連の質問がいくつかあります。
ユーザー名/パスワード資格情報を使用して Eureka Server を構成できることがわかりました。これにより、許可されていないアプリを排除できますが、各アプリは Eureka にアクセスするための資格情報を共有する必要があります。各マイクロサービスが独自のものを持つことができるように、資格情報のレジストリを作成する簡単な方法はありますか? (Spring Security のスタックなどにフックすると便利
UserDetailService
です)マイクロサービスが接続され、偽物を介して通信すると、元の要求で使用された資格情報を、他のマイクロサービスに対して行われる追加の呼び出しに共有/渡すことができますか? したがって、"Jim" がFooServiceで要求
/foos
し、FooServiceが BarService で要求した場合、 BarServiceは Jim がそれらを要求したことを認識しますか?/bars
Jim > FooService > BarService - BarService は、要求が Jim のために処理されていることを認識しています...
java - 別のプロジェクトから FeignClient を注入する際のエラー
別のプロジェクトから偽のクライアントを自動配線するのに問題があります。偽のクライアントの実装が生成および注入されていないようです。
これは私が得ているエラーです。
偽のクライアントは非常に単純です。簡潔にするためにインポートを削除しました。
コンポーネントスキャンをプロジェクトに追加して、アプリケーションとそのコントローラーを含め、他のプロジェクトに偽のクライアントを含めました。
簡潔にするためにほとんどのインポートが削除された残りのコントローラー。
さまざまなプロジェクトやさまざまなパッケージで偽のクライアント インターフェイスを定義しようとしましたが、アプリケーションと同じパッケージに配置した場合にのみ成功しました。これは、スキャンにパッケージを含めているにもかかわらず、コンポーネント スキャンの問題であると思われます。再利用可能な「コントラクト」を定義し、それを使用するアプリケーションで偽のクライアントを定義する代わりに、各プロジェクトに一意のパッケージ構造を持たせるために、偽のクライアントインターフェイスを共有プロジェクトに保持したいと思います。
ありがとう、ウェス。
spring-cloud - spring cloud feign を使用すると、java.lang.NoClassDefFoundError: feign/Logger が発生します
次のように、feignClients のスプリング クラウドを有効にしました。
しかし、enableFeignClients を追加するとすぐに、コンパイル中にこのエラーが発生しました。
私のPOMは
偽のロガーの問題を解決するには、他にどのような依存関係を POM に追加する必要がありますか?
ありがとう
@spencergibb に感謝します。あなたの提案に基づいて、pom を変更した後に機能しました。今、FeignClient の使用に関する別の問題があります。下記を参照してください:
インターフェイスは次のとおりです。
ストア エンティティは次のとおりです。
URLで取得すると、このエラーが発生しました。
ここでのエラーは、取得されたリストがストア クラスに変換できないようです。 FeignClient を使用するために、JSON をオブジェクトに変換するために含める必要がある他のマッパーはありますか?
ありがとう
spring-boot - 偽物とリボンのログを log4j2 にリダイレクトする
現在、log4j2 でスプリング クラウド ネットフリックスを使用しています。log4j2 構成は、クラスパスの xml から取得されます。アプリを実行すると、構成で指定されたロガーに偽装とリボンのログがリダイレクトされていないことがわかります。com.netflix.ribbon & feignパッケージのログがデバッグレベルでログに記録されるように構成しました。
ただし、春用に構成されたログは指定されたアペンダーに適切にリダイレクトされますが、リボンと偽物はそうではありません。
spring-boot-starter-logging を無視して gradle を使用し、ビルドの一部として spring-boot-starter-log4j2 を追加しました。
feign には slf4jを構成できる方法があることがわかりましたが、注釈駆動型の feign サポートを使用しているため、ロギングに slf4j を使用するように feign を構成することはできません。
どんな助けでも大歓迎です。
私のlog4j2.xmlは次のようになります
PS: 偽装/リボンをデバッグする理由は、マイクロ サービスのセットアップで 2 つの異なるマシン間の奇妙な偽装動作を理解するためです。
spring-cloud - hystrix サーキット ブレーカーを回避するために、eureka ill サービス アプリケーション インスタンスのみを取り出す方法は?
私は自分のローカル マシンでspring-cloud-samplesを試しており、eureka と hystrix をサポートするシンプルな REST サービスを開発しました。
Feign クライアントへの参照を含む hystrix コマンド メソッド (@HystrixCommand 注釈付きメソッド) を介してサービスに接続するフロントエンド アプリケーションがあります。
クライアントを装う
Hystrix ラッパー
Spring MVC ProductService の 2 つのインスタンスを開始しました。最初のものは、期待どおり、指定された識別子に基づいて製品情報を提供します。一方、2 番目のものは、システムの依存関係の失敗をシミュレートするために、常に RuntimeException をスローします。
フロントエンド側では、hystrix クライアントを使用して製品情報を取得し、ProductService インスタンスが (リボンにより) ラウンド ロビン方式で呼び出されます。ProductService インスタンスの 1 つが常に例外を配信するという事実により、フロントエンドで複数の連続した呼び出しを行った後、ProductService 回路が開かれます (ProductService のインスタンスの 1 つが要求を正常に処理できる場合でも)。
ProductService の hystrix サーキット ブレークを回避するために、問題のある ProductService インスタンスのみを eureka から削除し、それらを正しく機能させ続けるにはどうすればよいですか? ProductService のヘルス インジケーター リソース "/health" の機能を変更して、システム依存関係のエラーを追加でチェックする必要があると思います。
カスタムヘルスチェックを実行できるspring-boot-starter- actuator の使用に遭遇しましたが、これは eureka からサービスインスタンスを取り出すのに役立たないようです。
spring-cloud - @FeignClient でアノテーションが付けられたインターフェースを実装する @RestController クラスを安全に使用する方法
次のコードサンプルを考える
-- クライアント ライブラリ コード
-- サービス ライブラリ コード
サービス ライブラリがクライアント ライブラリを参照する場合、アプリケーションが開始されると、コンポーネント スキャンによって、StringHystrixClient からの依存関係を埋めるときに、Spring コンテナーが何をすべきかわからない状態になります。これは、StringClient を実装する 2 つの Bean があるためです。
これを回避する 1 つの解決策は、StringController に StringClient を実装しないことですが、インターフェイスと残りのコントローラーからのコードの重複により、エラーが発生しやすくなります。誰かがこの問題に対するより洗練された解決策を指摘できますか?