プッシュ通知と Spring Cloud Bus
多くのソースコードリポジトリプロバイダー(Github、Gitlab、Gitea、Gitee、Gogs、Bitbucket など)は、Webhook を介してリポジトリの変更を通知します。プロバイダーのユーザーインターフェースを介して、関心のある URL および一連のイベントとして Webhook を構成できます。たとえば、Github (英語) は、コミットのリストと push
に設定されたヘッダー(X-Github-Event
)を含む JSON 本文を使用して Webhook への POST を使用します。spring-cloud-config-monitor
ライブラリへの依存関係を追加し、構成サーバーで Spring Cloud Bus をアクティブ化すると、/monitor
エンドポイントが有効になります。
Webhook がアクティブ化されると、構成サーバーは、変更された可能性があると思われるアプリケーションを対象とした RefreshRemoteApplicationEvent
を送信します。変更の検出は戦略化できます。ただし、デフォルトでは、アプリケーション名に一致するファイルの変更を検索します(たとえば、foo.properties
は foo
アプリケーションを対象とし、application.properties
はすべてのアプリケーションを対象とします)。動作をオーバーライドする場合に使用する戦略は PropertyPathNotificationExtractor
です。これは、リクエストヘッダーと本文をパラメーターとして受け入れ、変更されたファイルパスのリストを返します。
デフォルトの構成は、Github、Gitlab、Gitea、Gitee、Gogs、Bitbucket でそのまま使用できます。Github、Gitlab、Gitee、Bitbucket からの JSON 通知に加えて、path={application}
のパターンでフォームにエンコードされた本文パラメーターを使用して /monitor
に POST することにより、変更通知をトリガーできます。そうすることで、{application}
パターン(ワイルドカードを含めることができる)に一致するアプリケーションにブロードキャストします。
RefreshRemoteApplicationEvent は、構成サーバーとクライアントアプリケーションの両方で spring-cloud-bus がアクティブ化されている場合にのみ送信されます。 |
デフォルト設定では、ローカル git リポジトリのファイルシステムの変更も検出されます。その場合、Webhook は使用されません。ただし、構成ファイルを編集するとすぐに、リフレッシュがブロードキャストされます。 |