Azure: "Служба не существует" при вызове актера
У меня есть IActor
что я хочу позвонить, чтобы сделать простое вычисление на основе напоминания. Это называется так:
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);
}
Однако всякий раз, когда SetupReminderAsync
метод называется, я получаю HRESULT: 0x80071BCD: Service does not exist
исключение. Я не уверен, что это значит, так как я могу ясно видеть, как сервис Актера раскручивается в режиме отладки. Я мог бы действительно использовать некоторые рекомендации о том, что происходит. Спасибо!
3 ответа
Оказывается мой ITEM_SCHEDULER_URI
было не правильно, потому что я предполагал, что конечная точка отличается от того, что было фактически заполнено После проверки ApplicationManifest
Я был в состоянии решить проблему.
Это заняло у меня некоторое время, но моя проблема заключалась в том, что у меня был совершенно неправильный интерфейс в ActorProxy.Create
вызов. Служебная фабрика все еще регистрирует актера, и это можно увидеть в проводнике сервисной фабрики, но не обманывайте себя.
Не будь таким, как я, проверь простые ошибки кодирования, прежде чем тщательно изучать манифесты.
Вы видите конечную точку для ActorService
в диспетчере локальных кластеров Service Fabric? Я видел эту проблему, когда я забыл определить конечную точку. Если вы используете по умолчанию ActorService
Я верю, что это определяет свое. Но если вы используете свой собственный ActorService
, Вы должны переопределить CreateServiceReplicaListeners()
и создай сам
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
return new List<ServiceReplicaListener>(base.CreateServiceReplicaListeners())
{
new ServiceReplicaListener(c => new FabricTransportServiceRemotingListener(c, this)),
};
}