Azure:"Service does not exist" 演员通话
Azure: "Service does not exist" on actor call
我有一个 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
异常。我不确定这意味着什么,因为我可以清楚地看到 Actor 的服务在调试模式下启动。我真的可以使用一些指导来了解正在发生的事情。谢谢!
您是否在 Service Fabric Local Cluster Manager 中看到 ActorService
的端点?当我忘记定义端点时,我已经看到了这个问题。如果您使用的是默认 ActorService
,我相信它会定义自己的。但是,如果您使用自己的自定义 ActorService
,则必须覆盖 CreateServiceReplicaListeners()
并自己创建一个:
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
return new List<ServiceReplicaListener>(base.CreateServiceReplicaListeners())
{
new ServiceReplicaListener(c => new FabricTransportServiceRemotingListener(c, this)),
};
}
事实证明我的 ITEM_SCHEDULER_URI
不正确,因为我假设端点与实际填充的端点不同。检查 ApplicationManifest
后,我能够解决问题。
这花了我一段时间,但我的问题是我在 ActorProxy.Create
调用中的界面完全错误。 Service Fabric 仍然注册了 Actor,可以在 Service Fabric Explorer 中看到,但不要被骗了。
不要像我一样,在仔细检查清单之前检查简单的编码错误。
我有一个 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
异常。我不确定这意味着什么,因为我可以清楚地看到 Actor 的服务在调试模式下启动。我真的可以使用一些指导来了解正在发生的事情。谢谢!
您是否在 Service Fabric Local Cluster Manager 中看到 ActorService
的端点?当我忘记定义端点时,我已经看到了这个问题。如果您使用的是默认 ActorService
,我相信它会定义自己的。但是,如果您使用自己的自定义 ActorService
,则必须覆盖 CreateServiceReplicaListeners()
并自己创建一个:
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
return new List<ServiceReplicaListener>(base.CreateServiceReplicaListeners())
{
new ServiceReplicaListener(c => new FabricTransportServiceRemotingListener(c, this)),
};
}
事实证明我的 ITEM_SCHEDULER_URI
不正确,因为我假设端点与实际填充的端点不同。检查 ApplicationManifest
后,我能够解决问题。
这花了我一段时间,但我的问题是我在 ActorProxy.Create
调用中的界面完全错误。 Service Fabric 仍然注册了 Actor,可以在 Service Fabric Explorer 中看到,但不要被骗了。
不要像我一样,在仔细检查清单之前检查简单的编码错误。