private async Task SendItemsToCollector() { IEnumerable <SessionCollection> repo = null; var ls = await _persistentStorage.GetLastSyncDateTime(); if (ls.HasValue && (ls.Value > DateTime.UtcNow.AddMinutes(-this._queueRetentionMinutes))) { repo = await _persistentStorage.Get(); if (repo.Sum(g => g.Collection.Payloads.Count) < this._queueSize) { return; } } if (repo == null) { repo = await _persistentStorage.Get(); } bool wasSuccessPublish = false; // TODO paralell run foreach (var eventCollection in repo) { var isSuccess = await this._eventPublisher.Send(eventCollection, this._sharedSecretKey); if (isSuccess) { await _persistentStorage.Delete(eventCollection); wasSuccessPublish = true; } } if (wasSuccessPublish) { await _persistentStorage.SetLastSyncDateTime(DateTime.UtcNow); } }