对于 ServiceFabric 有状态的 ReliableService:
我想将 IReliableQueue 注入到 ICommunicationListener(服务总线主题监听器)中,以便将长时间运行的任务排队以便在后台处理。
我最好在工厂方法重载中这样做:
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
var commandQueue = StateManager.GetOrAddAsync<IReliableQueue<Command>>("commandbus").Result;
var topicListener = communicationListenerCtor(commandQueue);
return []{new ServiceReplicaListener(context => topicListener, ...));}
}
鉴于 StateManager 仅通过 GetOrAddAsync 方法提供对 IReliableQueue 的异步访问,而工厂方法是同步的,因此这种方法说得委婉些。
在 RunAsync 方法之外访问 StateManager 状态的正确方法是什么?