public Task StartReceiver <T>(string storageConnection) where T : IEventProcessor { if (string.IsNullOrWhiteSpace(Listen_EventHubConnectionstring)) { throw new ArgumentNullException(nameof(Listen_EventHubConnectionstring)); } var eventhubclient = EventHubClient.CreateFromConnectionString(Listen_EventHubConnectionstring, EventHubPath); var defaultGroup = eventhubclient.GetDefaultConsumerGroup(); EventProc = new EventProcessorHost(AppDomain.CurrentDomain.FriendlyName, eventhubclient.Path, defaultGroup.GroupName, Listen_EventHubConnectionstring, storageConnection); var opt = new EventProcessorOptions { InitialOffsetProvider = partitionId => DateTime.UtcNow.AddHours(-1), PrefetchCount = 50, MaxBatchSize = 50 }; opt.ExceptionReceived += (sender, e) => { var errorLogger = new FileLogger(filePrefix: "EventProcessorUnhandledExceptions_", async: true); errorLogger.AddRow(sender?.ToString() ?? "Sender was null" + Environment.NewLine + e?.ToString() ?? "e was null" + Environment.NewLine + e?.Exception?.ToString() ?? "e.exception was null"); }; return(EventProc.RegisterEventProcessorAsync <T>(opt)); }
public Task <string> StoreEventsAsync(List <SystemEvent> events) { SystemEvent currentEvent = null; try { foreach (var @event in events) { currentEvent = @event; using (var connection = new SqlConnection(ConnectionString)) { connection.Open(); var query = GenerateQuery(); using (SqlCommand cmd = new SqlCommand(query, connection)) { AddParametersToCommand(cmd, @event); cmd.ExecuteNonQuery(); } } } } catch (Exception ex) { Logger.AddRow("!!ERROR!! during DB save of events. " + ex); var backUpStorage = new FileLogger(filePrefix: "failedSQLInsert_", maxIterations: 20, maxFilesize: 1024 * 2048, async: true); backUpStorage.AddRow(JsonConvert.SerializeObject(currentEvent)); return(Task.Factory.StartNew(() => { return "Exception when saving to DB"; })); } return(Task.Factory.StartNew(() => { return "Events saved to DB"; })); }