問題タブ [spring-cloud-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.
hystrix - HystrixFeign クライアントを構成するにはどうすればよいですか?
Spring Boot アプリを持っていますが、マルチパートがサポートされていないため、@EnableFeignClient を利用できません。( Multipart パラメーターを使用して Spring Feign クライアントを生成できますか? を参照してください)。
ビルダーを使用して独自の HystrixFeign クライアントを作成しています。
Hystrix の他のプロパティを構成するにはどうすればよいですか? 実行分離戦略、サーキット ブレーカーのスリープ ウィンドウ、ボリュームしきい値、エラーしきい値のパーセンテージを設定したいですか?
それらを application.properties ファイルに含めるだけで十分ですか? これらのプロパティが「uploadMedia」エンドポイントに適用されていることを確認するにはどうすればよいですか?
spring-mvc - Spring Data Rest と FeignClient のリソースから embeddedItems の自己リンクを取得する方法
Spring Data Rest を使用して 1 つのサービスでエンティティを公開し、別のサービスから FeignClient を使用してそれらのリソースにアクセスして更新するアプリケーションがあります。
Spring Data REST で @OneToMany サブリソース アソシエーションを POST するのを見た例では、これらの関係を確立する方法は次のとおりです。
- エンティティを作成する
- 新しく作成されたエンティティの "self" href を取得します
- そのタイプの所有エンティティの既存のエンティティのリストを作成し、新しく作成したリンクをリストに追加します
- アソシエーション URI への URI のリストを使用して「PUT」を実行し (Content-Type が「text/uri-list」)、アソシエーションを作成します。
私は AngularJs を使用してこれを行いましたが、正常に動作します。ただし、JavaScript コントローラーにドメイン オブジェクトの詳細な知識を持たせたくないので、Spring HATEOAS にそれを機能させたいと思っています。
したがって、私が行ったことは、Spring Cloud FeignClient を使用してこれらのエンドポイントにアクセスし、Angular が現在行っている作業を行うサービスをクライアント アプリケーションに作成することです。
私が直面している問題は、関連付けへの参照 (例: " http://myapp/myobjects/3/myassociation ") を取得し、その URI に対して "GET" を実行すると、"Resources<MyAssociation" が返されることです。 >" では、関連付けオブジェクトの URI のリストを取得する方法がありません。「リンク」で得られるのは、所有エンティティからの関連付けへの参照だけです (例: 「http://myapp/myobjects/3/myassociation」)。
新しく追加されたものを追加できるように、他のいくつかの GET を作成することなく、関連付けのリストを見つける方法はありますか?
前もって感謝します、
CS
docker - 領事サービスを使用した FeignClient 呼び出しにより、docker コンテナーで接続が拒否されたことがスローされる
領事と私のサービス用のdockerコンテナがあります。consul に登録されているサービスに到達しようとしている偽のクライアント インターフェイスがあります。ローカル テスト (localhost を使用) で動作します。ただし、コンテナ環境では同じことが機能しません。例外:
web_1 | 2016-05-27 15:40:01.131 INFO 1 --- [gement-client-1] c.n.l.DynamicServerListLoadBalancer : DynamicServerListLoadBalancer for client my-client initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=my-client,current list of Servers=[consul:9090],Load balancer stats=Zone stats: {unknown=[Zone:unknown; Instance count:1; Active connections count: 0; Circuit breaker tripped count: 0; Active connections per server: 0.0;]
web_1 | },Server stats: [[Server:consul:9090; Zone:UNKNOWN; Total Requests:0; Successive connection failure:0; Total blackout seconds:0; Last connection made:Thu Jan 01 00:00:00 UTC 1970; First connection made: Thu Jan 01 00:00:00 UTC 1970; Active Connections:0; total failure count in last (1000) msecs:0; average resp time:0.0; 90 percentile resp time:0.0; 95 percentile resp time:0.0; min resp time:0.0; max resp time:0.0; stddev resp time:0.0]
web_1 | ]}ServerList:ConsulServerList{serviceId='my-client', tag=null}
web_1 | 2016-05-27 15:40:02.088 INFO 1 --- [pool-5-thread-1] c.netflix.config.ChainedDynamicProperty : Flipping property: my-client.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
web_1 | 2016-05-27 15:40:02.525 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.netflix.hystrix.exception.HystrixRuntimeException: getUser failed and no fallback available.] with root cause
web_1 |
web_1 | java.net.ConnectException: Connection refused
web_1 | at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_72-internal]
web_1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_72-internal]
web_1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_72-internal]
web_1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_72-internal]
web_1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_72-internal]
web_1 | at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_72-internal]
web_1 | at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.http.HttpClient.New(HttpClient.java:308) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.http.HttpClient.New(HttpClient.java:326) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513) ~[na:1.8.0_72-internal]
web_1 | at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) ~[na:1.8.0_72-internal]
web_1 | at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[na:1.8.0_72-internal]
web_1 | at feign.Client$Default.convertResponse(Client.java:152) ~[feign-core-8.16.2.jar!/:8.16.2]
web_1 | at feign.Client$Default.execute(Client.java:74) ~[feign-core-8.16.2.jar!/:8.16.2]
web_1 | at org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:77) ~[spring-cloud-netflix-core-1.1.0.RELEASE.jar!/:1.1.0.RELEASE]
mocking - 偽のクライアントのモック実装は自動配線されません
春のプロジェクトをテストしたい。テストクラスで偽のクライアントをモックする必要がありますが、通常の実装はモック実装ではなく自動配線されます。これが私のコードのトップです。助けてください。
}
ここに私のテストクラスがあります:
java - Spring cloud : Feign クライアントを consul と連携させることができません
シンプルな春のクラウド領事アプリをセットアップしようとしています。
「ディストリビューション」サービスを作成し、consul に登録しました (spring.application.name プロパティを「ディストリビューション」に設定)。
私は、偽装を使用して「配布」サービスを呼び出そうとしている「取得」サービスを持っています。
これが私のメインクラスです
これが私の偽のクライアントです
ここに私のpom.xmlがあります
「/disco」URL をリクエストすると、「distribution」サービスの URL が適切に取得されます。これは、ディスカバリー全体が期待どおりに機能していることを意味します。
しかし、「/use-feign」URL をリクエストすると、次の例外が発生します。
com.netflix.client.ClientException: ロード バランサーには、クライアントに使用できるサーバーがありません: com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:468) で配布 ~[ribbon-loadbalancer-2.2.0.jar:2.2. 0] com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) で ~[ribbon-loadbalancer-2.2.0.jar:2.2.0] com.netflix.loadbalancer.reactive.LoadBalancerCommand$1 で。 call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.2.0.jar:2.2.0] at rx.Observable.unsafeSubscribe(Observable.java:8460) ~[rxjava-1.1.5.jar:1.1.5 ] rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) で ~[rxjava-1.1.5.jar:1.1.5] rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) で ~ [rxjava-1.1.5.jar:1.1.5]
構成が不足していますか?
ご協力ありがとうございました。
integration-testing - Test Double を使用した FeignClient の統合テスト
私は春の雲にかなり慣れていません。ワイヤー モックのようなテスト ダブルまたはある種のテスト ダブルを使用して、Feign クライアントで統合テストを実行する方法はありますか? このモック化されたテストをレジストリ サーバーに二重に登録し、それを FeignClient で使用する方法はありますか?
spring-cloud - Spring Cloud でカスタマイズされた ErrorDecoder と @ExceptionHandler を連携させる方法
「hr」と呼ばれるSpringクラウドサービスと、Feignをクライアントとして使用してhrサービスを呼び出すAPIゲートウェイサービスがあります。hr サービスで例外が発生した場合、型が の json メッセージが返されますResponseEntity<ServiceException>
。のServiceException
ようなものです:
feign.codec.ErrorDecoder
API ゲートウェイ サービスでは、次のようにカスタマイズしました。
ServiceException を取得しても問題なく動作し、次のようなエラー メッセージを取得できます。
エラー メッセージの形式を変更し、少なくともclassのerrorCode
フィールドを追加したいので、例外を処理するための注釈クラスを追加します。しかし残念ながら、それはうまくいきません。一部のフィルターからだけコントローラーによって例外がスローされないため、注釈が機能しない可能性があります。ServiceException
@ControllerAdvice
@ControllerAdvice
どなたか、ケースのアドバイスをいただけないでしょうか。
spring-cloud - 特定の @FeignClient で eureka ルックアップを無効にする方法
@FeignClient
主に他のマイクロサービスと通信するために使用するマイクロサービスがあります。これは、Eureka のサービス検出メカニズムを使用して美しく機能します。
今、私は@FeignClient
外部システムに接続するために a を使用する差し迫った必要性があり、以下に示すように構成を使用して負荷分散を実行します。
Feign client
:
application.yml
:
私が調べた多くのドキュメントから、eureka を無効にして、使用可能な listOfServers から負荷分散を取得できるようにすることをお勧めします。私はそれをフォローアップし、次の構成を使用して無効にしました。
application.yml
:
これにより、外部システムをターゲットとする偽クライアントの負荷分散を実行できましたが、サービス検出を使用する必要がある他のすべての偽クライアントが機能しなくなりました。
外部システムのみの偽のクライアント設定で eureka を無効にし、他のクライアントでは正常に機能できるようにする方法はありますか?
前もって感謝します!
spring-boot - HAL を使用した RepostoryRestResource へのクライアント (非 Web 環境) の偽装 - 有効なユースケースではありませんか?
最近、スプリング ブート アプリケーション (私の場合は Web アプリではありません) で偽のクライアントを操作しているときに、クライアントがオブジェクトを正しく逆シリアル化できないことがわかりました。同僚が私に指摘したように-HALモジュールの登録が、ヘイトの春の自動構成で@ConditionalOnWebApplicationによって条件付きで保護されていることが原因であることが判明しました
これを知ることで、これを克服するために導入できる解決策があります
- 登録された HAL モジュールを持つ ObjectMapper を含む偽のクライアントにデコーダーを追加できます (小さなコードですが、まだ余分な作業があります)。
- Web アプリケーションに変換する - これはまったく良い解決策ではなく、すぐに使えるようにするという要点で行うべきではないと感じています。
それで、これを知っている人はこれに遭遇しましたか?JPa rest リソースの偽のクライアントを持つことは有効なシナリオだと思います。
以下は、Paged であるサーバー応答の例です。以下の応答のメタデータ コンテンツが受信されたことに注意してください (結果は 1 つです) が、ページ化されたリソースのコンテンツを読み込もうとしたときに修正がないと、null/空であることが判明します