Service Fabric
==============
If you have services deployed in `Azure Service Fabric `_ you will normally use the naming service to access them.
The following example shows how to set up a Route that will work in *Service Fabric*.
The most important thing is the **ServiceName** which is made up of the *Service Fabric* application name then the specific service name.
We also need to set up the **ServiceDiscoveryProvider** in **GlobalConfiguration**.
The example here shows a typical configuration.
It assumes *Service Fabric* is running on ``localhost`` and that the naming service is on port ``19081``.
The example below is taken from the `samples/OcelotServiceFabric `_ folder so please check it if this doesn't make sense!
.. code-block:: json
{
"Routes": [
{
"DownstreamScheme": "http",
"DownstreamPathTemplate": "/api/values",
"UpstreamPathTemplate": "/EquipmentInterfaces",
"UpstreamHttpMethod": [ "Get" ],
"ServiceName": "OcelotServiceApplication/OcelotApplicationService"
}
],
"GlobalConfiguration": {
"RequestIdKey": "OcRequestId",
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 19081,
"Type": "ServiceFabric"
}
}
}
If you are using stateless / guest exe services, Ocelot will be able to proxy through the naming service without anything else.
However, if you are using statefull / actor services, you must send the **PartitionKind** and **PartitionKey** query string values with the client request e.g.
GET http://ocelot.com/EquipmentInterfaces?PartitionKind=xxx&PartitionKey=xxx
There is no way for Ocelot to work these out for you.