Адреса конечных точек на самом деле находятся в репликах и экземплярах службы - это те вещи, которые фактически размещены на узлах. Для этого есть специальный метод в ServiceManagerClient, который называется ResolveServicePartitionAsync.
В Reliable Services SDK (в пространстве имен Microsoft.ServiceFabric.Services.Client), мы предлагаем утилиту распознавателя, что делает это немного проще:
ServicePartitionResolver resolver = ServicePartitionResolver.GetDefault();
ResolvedServicePartition partition =
await resolver.ResolveAsync(new Uri("fabric:/MyApp/MyService"), new ServicePartitionKey(), cancellationToken);
Свойство Endpoints из ResolvedServicePartition список каждого replica/instance в разделе. Свойство Address будет содержать JSON объект, который представляет собой список пар ключ-значение, содержащее каждый слушатель, который открыт с помощью реплик/например:
{
"Endpoints" :
{ "mylistener1" : "some-address" },
{ "mylistener2" : "some-address" }
...
}
Имейте в виду, что нет никаких гарантий того, когда реплики/случаи приходят поэтому вам может потребоваться повторить несколько раз. Кроме того, реплики и экземпляры будут перемещаться время от времени на протяжении всей службы, поэтому вам нужно будет обновлять список. В принципе, вы не можете просто получить всю эту информацию за один раз и установить ее, потому что это очень динамичная система.
Смотрите здесь для получения дополнительной информации: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-connect-and-communicate-with-services/
И здесь для получения более подробной информации: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-communication/
Извините, но ваше решение также заканчивается 'System.Fabric.FabricServiceNotFoundException': * Служба не существует * сообщение. Я думаю, что это так, как работает сервисная ткань. – Horusiath
В какой момент жизненного цикла вашего сервиса вы пытаетесь получить адреса каждого экземпляра или реплики? –
Эта информация не может быть найдена где-либо еще в interwebs ... Спасибо – Froyke