private async Task startDurabilityAgent() { // HOKEY, BUT IT WORKS if (_container.Model.DefaultTypeFor <IEnvelopePersistence>() != typeof(NulloEnvelopePersistence)) { var durabilityLogger = _container.GetInstance <ILogger <DurabilityAgent> >(); // TODO -- use the worker queue for Retries? var worker = new DurableWorkerQueue(new LocalQueueSettings("scheduled"), Pipeline, Settings, Persistence, TransportLogger); Durability = new DurabilityAgent(TransportLogger, durabilityLogger, worker, Persistence, Runtime, Options.Advanced); await Durability.StartAsync(Options.Advanced.Cancellation); } }
private async Task runAction <T>() where T : IMessagingAction { var persistor = _host.Get <SqlServerEnvelopePersistence>(); foreach (var envelope in _envelopes) { if (envelope.Status == TransportConstants.Outgoing) { await persistor.StoreOutgoing(envelope, envelope.OwnerId); } else { await persistor.StoreIncoming(envelope); } } var agent = DurabilityAgent.ForHost(_host); var action = _host.Get <T>(); await agent.Execute(action); }
private async Task runAction <T>() where T : IMessagingAction { using (var session = theStore.LightweightSession()) { foreach (var envelope in _envelopes) { if (envelope.Status == EnvelopeStatus.Outgoing) { session.StoreOutgoing(_settings, envelope, envelope.OwnerId); } else { session.StoreIncoming(_settings, envelope); } } await session.SaveChangesAsync(); } var agent = DurabilityAgent.ForHost(_host); var action = _host.Get <T>(); await agent.Execute(action); }