最新の安定バージョンについては、spring-cloud-bus 4.3.0 を使用してください。

インスタンスのアドレス指定

インスタンスのアドレス指定

アプリケーションの各インスタンスにはサービス ID があり、その値は spring.cloud.bus.id で設定でき、その値は、最も具体的なものから最も具体的なものの順にコロンで区切られた識別子のリストであることが期待されます。デフォルト値は、spring.application.name と server.port (または spring.application.index (設定されている場合)) の組み合わせとして環境から構築されます。ID のデフォルト値は app:index:id の形式で構成されます。ここ

  • app は、vcap.application.name (存在する場合)、または spring.application.name です。

  • index は、vcap.application.instance_index (存在する場合)、spring.application.indexlocal.server.portserver.port、または 0 (この順序) です。

  • id は、vcap.application.instance_id (存在する場合)、またはランダムな値です。

HTTP エンドポイントは、/busrefresh/customers:9000 などの「宛先」パスパラメーターを受け入れます。ここで、destination はサービス ID です。ID がバス上のインスタンスによって所有されている場合、そのインスタンスはメッセージを処理し、他のすべてのインスタンスはそれを無視します。

サービスのすべてのインスタンスに対処する

「宛先」パラメーターは、インスタンスがメッセージを処理するかどうかを決定するために、Spring PathMatcher (パス区切り文字がコロンである :) で使用されます。前の例を使用すると、/busenv/customers:** は、サービス ID の残りの部分に関係なく、「顧客」サービスのすべてのインスタンスをターゲットにします。

サービス ID は一意である必要があります

バスはイベントの処理を排除するために 2 回試行します。1 回目は元の ApplicationEvent から、もう 1 回はキューからです。そのために、送信サービス ID を現在のサービス ID と照合してチェックします。サービスの複数のインスタンスが同じ ID を持つ場合、イベントは処理されません。ローカルマシンで実行している場合、各サービスは異なるポート上にあり、そのポートは ID の一部です。Cloud Foundry は区別するためのインデックスを提供します。ID が Cloud Foundry の外部で一意であることを確認するには、spring.application.index をサービスのインスタンスごとに一意の値に設定します。