Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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"; }));
        }