Не удается преобразовать конечную точку в актера с помощью ActorServiceProxy

У меня есть актер в моем локальном кластере servicefabric, я пытаюсь удалить его, когда работа выполняется из моей службы без сохранения состояния. Я использую RemotingListenerVersion.V2.

  var actor = ActorServiceProxy.Create(new Uri($"{_applicationName}/{_actorServiceName}"), actorId);
              await actor.DeleteActorAsync(actorId, CancellationToken.None);

то я получаю исключение:

{"NamedEndpoint 'V2Listener' не найден по адресу '{\"Endpoints\":{\"\":\"my-localhost.pl:30004+ea7448c4-2a32-4c48-8ac9-cb23b6bd6269-131849397597858002-a68d72c7-2387 -4390-8170-49b38127c0d1\"}}" для раздела "xxxx-xxx-xxxx-8ac9-cb23b6bd6269"}

мой актерский манифест:

<StatefulServiceType ServiceTypeName="ActorServiceActorServiceType" HasPersistedState="true">
      <Extensions>
        <Extension Name="__GeneratedServiceType__" GeneratedId="c0c20ebd-xxx-xxx-xxx-ebaa99dce8ed|Persisted">
          <GeneratedNames xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
            <DefaultService Name="xxxActorService" />
            <ReplicatorEndpoint Name="xxxxActorServiceActorServiceReplicatorEndpoint" />
            <ReplicatorConfigSection Name="xxxxActorServiceReplicatorConfig" />
            <ReplicatorSecurityConfigSection Name="xxxxxActorServiceActorServiceReplicatorSecurityConfig" />
            <StoreConfigSection Name="xxxxxActorServiceActorServiceLocalStoreConfig" />
            <ServiceEndpointV2 Name="xxxxxActorServiceActorServiceEndpointV2" />
            <ServiceEndpointV2 Name="ServiceEndpointV2" />
            <Endpoint Name="ServiceEndpointV2" />
          </GeneratedNames>
        </Extension>
      </Extensions>
    </StatefulServiceType>
    <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
      <ExeHost>
        <Program>xxxxxxx.exe</Program>
      </ExeHost>
    </EntryPoint>
  </CodePackage>
  <ConfigPackage Name="Config" Version="1.0.0" />
  <Resources>
    <Endpoints>
      <Endpoint Name="xxxxxxxEndpointV2" />
      <Endpoint Name="xxxxxxxEndpoint" />
      <Endpoint Name="ServiceEndpointV2"   />
    </Endpoints>
  </Resources>
  <!-- The content will be generated during build -->
</ServiceManifest>

Что я делаю неправильно? Почему имя конечной точки актера пустое (значение верное)?




Ответы (1)


Я проверил метод CreateServiceInstanceListeners

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
        {
            return new[]
            {
                new ServiceInstanceListener(
                    context =>
                    new FabricTransportServiceRemotingListener(
                        context,
                        serviceRemotingMessageHandler: new MiddlewareServiceRemotingMessageDispatcher(
                            context,
                            this,
                            middlewareAction: MiddlewareAction,
                            serviceRemotingMessageBodyFactory: new JsonMessageFactory()),
                        serializationProvider: new ServiceRemotingJsonSerializationProvider()))
            };
    }

Я заметил, что мне не хватает параметра «имя». Когда ставлю, все идет хорошо. Решено.

person not_you    schedule 25.10.2018