分区的主要或无状态实例具有无效地址

问题描述 投票:18回答:3

我使用开箱即用的分区创建了一个有状态的服务:

<StatefulService ServiceTypeName="ExamplesServiceType" TargetReplicaSetSize="[ExamplesService_TargetReplicaSetSize]" MinReplicaSetSize="[ExamplesService_MinReplicaSetSize]">
            <UniformInt64Partition PartitionCount="[ExamplesService_PartitionCount]" LowKey="-9223372036854775808" HighKey="9223372036854775807" />
         </StatefulService>

服务清单将params设置为(开箱即用):

 <Parameter Name="ExampleService_PartitionCount" Value="1" />
 <Parameter Name="ExampleService_MinReplicaSetSize" Value="2" />
 <Parameter Name="ExampleService_TargetReplicaSetSize" Value="3" />
 <Parameter Name="WebService_InstanceCount" Value="1" />

现在我想从同一群集中的无状态服务调用我的有状态服务:

 ServiceUriBuilder builder = new ServiceUriBuilder(ExampleServiceName);
 var service = ServiceProxy.Create<IExampleService>(builder.ToUri(),new ServicePartitionKey(1));

 return service.MyCallAsync(id);

我收到以下错误:

分区'a67f7afa-3370-4e6f-ae7c-15188004bfa1'的主要或无状态实例具有无效地址,这意味着副本/实例中的正确地址未在系统中注册

有状态服务我正在尝试将日志记录到事件日志中并且日志带有“partitionId”:“a67f7afa-3370-4e6f-ae7c-15188004bfa1”。

我错过了什么?

azure-service-fabric
3个回答
27
投票

我没有按照http://vunvulearadu.blogspot.com/2016/04/azure-service-fabric-primary-or.html的说明注册遥控器

        protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
    {
        return new[] { new ServiceReplicaListener(context => this.CreateServiceRemotingListener(context)) };
    }

11
投票

如果其他人来到这里想知道如何为无状态服务做什么,这对我有用:

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    return new[] { new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context)) };
}

0
投票

对于那些使用Microsoft.ServiceFabric.Services.Remoting版本3.3.638的人,我发现没有名为CreateServiceInstanceListeners()的扩展方法。我只在CreateServiceRemotingInstanceListeners()找到了CreateServiceRemotingReplicaListeners()Microsoft.ServiceFabric.Services.Remoting.Runtime.ServiceRemotingExtensions

这段代码为我编译:

    protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
    {
        return this.CreateServiceRemotingInstanceListeners();
    }
© www.soinside.com 2019 - 2024. All rights reserved.