2017-04-20 6 views
0

간단한 알림 기반 계산을 위해 IActor을 호출하고 싶습니다. 과 같이 호출 다음 SetupReminderAsync 메소드가 호출 될 때마다Azure : 액터 호출시 "서비스가 존재하지 않습니다"

var actorId = new ActorId($"item_{resp.ResultValue.Id}"); 
var scheduler = ActorProxy.Create<IScheduler>(actorId, ITEM_SCHEDUER_URI); 
try 
{ 
    await scheduler.SetupReminderAsync(new ItemInformation() 
    { 
     EntityId = entityId.ToString(), 
     Date = resp.ResultValue.AutoResolveOn 
    }).ConfigureAwait(false); 
} 

그러나, 내가 HRESULT: 0x80071BCD: Service does not exist 예외를 얻을. Actor의 서비스가 디버그 모드로 회전하는 것을 분명히 볼 수 있기 때문에 이것이 무엇을 의미하는지 확신 할 수 없습니다. 무슨 일이 일어나고 있는지에 대한 지침을 실제로 사용할 수 있습니다. 감사!

답변

0

. ApplicationManifest을 확인한 후 문제를 해결할 수있었습니다.

1

Service Fabric Local Cluster Manager에 ActorService의 끝점이 표시됩니까? 끝점을 정의하는 것을 잊었을 때이 문제를 보았습니다. 기본값 인 ActorService을 사용하는 경우 자체 정의한다고 생각합니다. 당신이 당신의 자신의 주문 ActorService를 사용하는 경우, 당신은 하나를 직접 CreateServiceReplicaListeners()을 무시하고 작성해야합니다 : 그것은 내가 실제로 채워진 것보다 다른 엔드 포인트를 가정하기 때문에 내 ITEM_SCHEDULER_URI가 정확하지 않았다 밝혀

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners() 
{ 
    return new List<ServiceReplicaListener>(base.CreateServiceReplicaListeners()) 
    { 
     new ServiceReplicaListener(c => new FabricTransportServiceRemotingListener(c, this)), 
    }; 
} 
0

이것은 다소 시간이 걸렸지 만, 문제는 내가 ActorProxy.Create 호출에서 완전히 잘못된 인터페이스를 가졌다는 것입니다. 서비스 패브릭은 여전히 ​​액터를 등록하고 서비스 패브릭 탐색기에서 볼 수 있지만 속지 마십시오.

저를 좋아하지 마십시오. 매니페스트를 조사하기 전에 간단한 코딩 오류가 있는지 확인하십시오.