問題タブ [spring-cloud-bus]
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 - Spring Cloud Config + Spring Cloud Bus + RabbitMQ - ローカル Git リポジトリでクライアントを自動更新しない
Spring Cloud Config Server ( Brixton.RELEASE )から構成を取得するいくつかのアプリケーションがあり、そのプロパティの自動更新を有効にしたいと考えています。Spring Cloud Configのドキュメントに従ってサーバー アプリとクライアント アプリの両方を構成しましたが、ローカルの git ファイルを変更しても何も起こりません。
デフォルトの構成では、ローカル git リポジトリのファイルシステムの変更も検出されます (その場合、Webhook は使用されませんが、構成ファイルを編集するとすぐに更新がブロードキャストされます)。
Spring Cloud のコードでどこが間違っているのか、またはそれをチェックするためにデバッグする場所を誰か指摘できますか?
Spring クラウド サーバー構成:
Spring Cloud サーバー pom.xml
Spring Cloud Config の起動ログ:
クライアント アプリ pom.xml :
クライアント アプリの構成:
クライアント アプリの起動ログ:
netflix-eureka - spring-cloud-config および spring-cloud-bus の問題
3 つのアプリケーションがあります。1 つは spring-cloud-config サーバー ポイントで、もう 1 つは spring-cloud-config クライアント ポイントです。クライアントポイントの自動更新が変更されるようにお互いに spring-cloud-bus を構成しましたが、実行中のアプリケーションで次のような例外が発生しました
これは私の spring-cloud-server 構成です
これは私の spring-cloud-config サーバー pom です
これは私のspring-cloud-configクライアント構成です
これは私のspring-cloud-configクライアントポイントpomです
この例外は操作のアプリケーションには影響しませんが、アプリケーションが例外をスローする理由を知りたいです
spring - Spring Cloud Config Server がプレーンテキストファイルを構成クライアントアプリケーションにプッシュする方法は?
これまでに実装したものは次のとおりです。
- 「ネイティブ」リポジトリを持つ Spring Cloud Config サーバー。
spring.profiles.active: native
spring.cloud.config.server.native.searchLocations: file:/path/to/config-repo
構成サーバーは、 http: //cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_push_notifications_and_spring_cloud_bus として、RabbitMQ を介して構成クライアント アプリに通知をプッシュしています。
Config Client App には、サービス Bean に @RefreshScope アノテーションが付けられています。
したがって、/config-repo には application.yaml、client.yaml、client.json の 3 つのファイルがあります。すべての yaml プロパティの変更は、Config Client App によって確実に自動リロードされます。ただし、client.json はそうではありませんでした。
https://github.com/spring-cloud/spring-cloud-config/issues/147に基づいて、 /{appname}/{profile} を使用して、構成サーバーへの REST API 呼び出しを介して構成クライアント アプリでファイルを取得できます。 /{ラベル}/client.json
質問は:
1) 構成サーバーは、このプレーン テキスト ファイルの変更を「ネイティブ」で監視していますか?
2) Config Client App は、更新後にこの client.json をどのように自動リロードできますか? (Config サーバーを呼び出すタスクをスケジュールすることはできますが、これは理想的ではありません。)
spring-cloud-bus - Spring Cloud Bus - カスタム イベントを受信しましたが、イベント ハンドラーによって処理されませんでした
Spring Cloud Bus (1.2.1.RELEASE、Camden.SR2) を使用しています。CustomEvent
私は作成して登録したカスタム イベント (と呼びます) と、イベントを公開するため@RemoteApplicationEventScan
のカスタム実装を持っています。AbstractBusEndpoint
イベントをバスに問題なく発行できます。
リモート アプリケーションがイベントを受信して確認します (trace
エンドポイントを使用してこれを確認しました)。で提供さCustomEvent
れている を介して が公開されていることをデバッグによって確認しました。リモート アプリケーションにイベント ハンドラーを持つ Bean があります (これはすべてのマイクロ サービスに自動構成されています)。ApplicationEventPublisher
BusAutoConfiguration#acceptRemote
それにもかかわらず、イベント ハンドラーはイベントを受け取りません。クラス内をトレースしAbstractApplicationEventMulticaster
、Bean が作成されている (エンドポイントを介して検証されている) にもかかわらず、リスナーがによって取得されbeans
た のリストに含まれていません。このリストにはリスナーが表示されますが、カスタム リスナーは表示されません。ApplicationListener
ListenerRetriever
BusAutoConfiguration.acceptLocal
このイベント ハンドラーは、ソース アプリケーション (イベントを開始するためにバス エンドポイントにアクセスしているアプリケーション) にも登録されています。カスタム リスナーは、このアプリケーションでイベントを受け取りますが、リモート アプリケーションでは受け取りません。
基本的に、両方のアプリケーションはまったく同じように構成されていますが、一方がCustomEvent
の実装を使用してを送信するように構成されていますAbstractBusEndpoint
。
この問題をデバッグするために、Spring コード内の他の場所を探す方法がわかりません。誰かが私を導くことができるスレッドを持っているなら、それはありがたいです.