Table of Contents

Configuration-based discovery client

The simplest way to use service discovery is by storing the list of app instances in .NET configuration.

Configuration settings

An app instance in configuration contains the following keys:

Key Description
ServiceId The app friendly name
Host The hostname or IP address of the service instance
Port The port number the service instance is listening on
IsSecure Whether to use HTTP or HTTPS to access the service instance

For example, the appsettings.json file shown here adds one instance of billingService and two instances of shippingService.

{
  "Discovery": {
    "Services": [
      {
        "ServiceId": "billingService",
        "Host": "192.168.0.1",
        "Port": "5000",
        "IsSecure": false
      },
      {
        "ServiceId": "shippingService",
        "Host": "one.internal.shipping.company.com",
        "Port": "888",
        "IsSecure": true
      },
      {
        "ServiceId": "shippingService",
        "Host": "two.internal.shipping.company.com",
        "Port": "999",
        "IsSecure": true
      }
    ]
  }
}

Using the preceding configuration, sending an HTTP request to http://shippingService/api?id=123 with Steeltoe service discovery activated sends the request to either:

  • https://one.internal.shipping.company.com:888/api?id=123
  • https://two.internal.shipping.company.com:999/api?id=123

The chosen instance depends on the load balancer strategy, which defaults to random.