我有一个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的服务在调试模式下旋转。我真的可以对正在发生的事情使用一些指导。谢谢!
答案 0 :(得分:1)
您是否在Service Fabric Local Cluster Manager中看到ActorService
的端点?当我忘记定义端点时,我已经看到了这个问题。如果您使用默认的ActorService
,我相信它会定义自己的。{1}}。但是,如果您使用自己的自定义ActorService
,则必须覆盖CreateServiceReplicaListeners()
并自行创建一个:
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
return new List<ServiceReplicaListener>(base.CreateServiceReplicaListeners())
{
new ServiceReplicaListener(c => new FabricTransportServiceRemotingListener(c, this)),
};
}
答案 1 :(得分:1)
这花了我一段时间,但我的问题是我在ActorProxy.Create
电话中完全错误的界面。服务结构仍然注册了演员,它可以在服务结构浏览器中看到,但不要被愚弄。
不要像我一样,在仔细检查清单之前检查一下简单的编码错误。
答案 2 :(得分:0)
事实证明我的ITEM_SCHEDULER_URI
不正确,因为我假设一个端点与实际填充的端点不同。检查ApplicationManifest
后,我能够解决问题。