public async Task <bool> DeleteFromSecondary(Event @event, CancellationToken cancellationToken = default) { if (@event == null) { throw new ArgumentNullException(nameof(@event)); } logger.LogTrace($"Starting {nameof(DeleteFromSecondary)}"); var result = true; try { using (var metricLogger = new DurationMetricLogger(MetricNames.DeleteFromSecondaryDuration, logger)) { await secondaryClient.DeleteConfigurationSettingAsync(@event.Data.key, @event.Data.label, cancellationToken); } } catch (Exception ex) { logger.LogError(ex, $"Error during delete settings from secondary -> [{@event.Data.key},{@event.Data.label}]"); result = false;; } logger.LogTrace($"Finish {nameof(DeleteFromSecondary)}"); return(result); }
public async Task DeleteEventAsync(Event @event) { if (@event == null) { throw new ArgumentNullException(nameof(@event)); } if (@event.PersistenceId == null) { throw new ArgumentException(nameof(@event.PersistenceId)); } logger.LogTrace($"Starting {nameof(DeleteEventAsync)}"); try { var messageId = @event.PersistenceId as MessageIdentifier; using (var metricLogger = new DurationMetricLogger(MetricNames.DeleteMessageDuration, logger)) { await queueClient.DeleteMessageAsync(messageId.MessageId, messageId.PopReceipt); } } catch (Exception ex) { logger.LogError(ex, $"Error during deleting message from queue"); throw; } logger.LogTrace($"Finish {nameof(DeleteEventAsync)}"); }
public async Task <IEnumerable <Event> > ReceiveEventsAsync(int numberOfEvents) { if (numberOfEvents <= 0) { throw new ArgumentOutOfRangeException(nameof(numberOfEvents)); } logger.LogTrace($"Starting {nameof(ReceiveEventsAsync)}"); IEnumerable <Event> result = null; try { using (var metricLogger = new DurationMetricLogger(MetricNames.RetrieveMessagesDuration, logger)) { var response = await queueClient.ReceiveMessagesAsync(numberOfEvents); if (response.HasMessages()) { result = response.Value.Select(m => { var e = m.CreateEvent(); e.PersistenceId = new MessageIdentifier() { MessageId = m.MessageId, PopReceipt = m.PopReceipt }; return(e); }).ToList(); } } } catch (Exception ex) { logger.LogError(ex, $"Error during retrieving messages from queue"); result = null; } logger.LogTrace($"Finish {nameof(ReceiveEventsAsync)}"); return(result); }
public async Task AppConfigSyncFunction( [TimerTrigger("%UpdatePollingTime%")] TimerInfo timer, ILogger log) { await queueService.ConnectAsync(); IEnumerable <Event> events; do { events = await queueService.ReceiveEventsAsync(30); if (events != null && events.Any()) { appConfigSyncService.Connect(); bool syncResult = true; foreach (var @event in events) { using (var metricLogger = new DurationMetricLogger(MetricNames.EventSynchronizationDuration, log)) { syncResult = true; if (@event.IsKeyValueModified()) // the setting was added or updated { syncResult = await appConfigSyncService.UpsertToSecondary(@event); } else if (@event.IsKeyValueDeleted()) // the setting was deleted { syncResult = await appConfigSyncService.DeleteFromSecondary(@event); } } if (syncResult) { await queueService.DeleteEventAsync(@event); } } } } while (events != null && events.Any()); }