如果您在Service Fabric中部署了服務,則通常會使用命名服務來訪問它們。
以下示例展示如何設定一個ReRoute以便在在Service Fabric中工作。 最重要的是ServiceName,它由Service Fabric應用程式名稱和特定服務名稱組成的。 我們還需要將UseServiceDiscovery設定為true,並在GlobalConfiguration中設定ServiceDiscoveryProvider。 這裡的例子顯示了一個典型的配置。 它假定Service Fabric在本地主機上執行,並且命名服務位於19081埠上。
下面的例子來例子本資料夾,所以請檢查它配置是否與你的實際情況相符!
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/values",
"UpstreamPathTemplate": "/EquipmentInterfaces",
"UpstreamHttpMethod": [
"Get"
],
"DownstreamScheme": "http",
"ServiceName": "OcelotServiceApplication/OcelotApplicationService",
"UseServiceDiscovery" : true
}
],
"GlobalConfiguration": {
"RequestIdKey": "OcRequestId",
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 19081,
"Type": "ServiceFabric"
}
}
}
如果您使用無狀態/ guest exe服務,ocelot將能夠通過命名服務進行代理,而無需其他任何操作。 但是,如果您使用的是有狀態/actor服務,則客戶端請求必須傳送PartitionKind和PartitionKey查詢字串。
GET http://ocelot.com/EquipmentInterfaces?PartitionKind=xxx&PartitionKey=xxx
Ocelot無法為您解決這個問題。