Для ServiceFabric Stateful 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 предоставляет асинхронный доступ к IReliableQueue только через метод GetOrAddAsync, а фабричный метод - это синхронизация, этот подход мягко говоря не кажется правильным.
Каков правильный подход для доступа к состоянию StateManager вне метода RunAsync?