「client-Foo」と呼ばれるマイクロサービスのグループがあります。Fooは特定のサードパーティクライアントの名前です。
これらの名前をそのまま使用すると、非常にいエンドポイントURLが作成されるため、それらをより優れた階層形式に変換したいと思います。
カスタムを追加しました PatternServiceRouteMapper
serviceIdを取る client-Foo
それをURLに変えます client/Foo
.
これにより、必要なURLが得られますが、サービスマッピングも破損します。 また、 登録されたserviceIdを変更します client/Foo
;したがって、Zuulがルーティングに行くと失敗する は いいえ client/Foo
サービス、そのIDは client-Foo
!
アプリケーションが任意の数の異なる「client- *」サービスを必要とするため、パスをハードコーディングできません。
回答:
回答№1は0見て ZuulProxyAutoConfiguration、いくつかのBeanを置き換えて目標を達成できることがわかります。特に、独自の実装を提供することを検討する必要があります。 RouteLocator
インターフェースまたは拡張 DiscoveryClientRouteLocator
クラス。 サービスインスタンスは、メタデータマップの追加データとともにEurekaサーバーに登録することもできます。 RouteLocator
使用できます。
回答№2の場合は0
構成定義のZuulルートを追加するだけです:
zuul:
routes:
client-foo: /foo/**
また、config-server api(/config/foo-profile.ymlで、profileは設定を取得する対象のスプリングプロファイルです)を混乱させる可能性があるため、service-idにダッシュがないようにすることをお勧めします。