private async Task Initialize() { if (_initialized) { return; } for (int i = 0; i < 5; i++) { try { var optionsBuilder = new DbContextOptionsBuilder <WoodchuckDbContext>(); optionsBuilder.UseNpgsql(_woodchuck); using (var context = new WoodchuckDbContext(optionsBuilder.Options)) { _config = context.WorkerSettings.ToDictionary(x => x.Key, x => x.Value); } _initialized = true; break; } catch (Exception) { if (i >= 4) { throw; } await Task.Delay(10000); } } }
private async Task Consumer_Received(object sender, BasicDeliverEventArgs @event) { _logger.LogInformation("[Worker] Worker processing message at {0}", DateTime.Now); var optionsBuilder = new DbContextOptionsBuilder <WoodchuckDbContext>(); optionsBuilder.UseNpgsql(_woodchuck); using (var context = new WoodchuckDbContext(optionsBuilder.Options)) { var photographer = new Photographer( context.CameraSettings.ToList <CameraSettings>()); var photos = await photographer.GetPhotos(); var scribe = new Scribe( _config["Storage_Uri"]); var recordedPhotos = await scribe.SaveStreams(photos); var messenger = new Messenger( _config["Twilio_User"], _config["Twilio_Password"], _config["Twilio_Telephone"], context.NotificationSettings.Where( x => x.Enabled == true). ToList <NotificationSettings>()); messenger.SendMessage("Doorbell alert!", recordedPhotos); } }
public QueueService(ILogger <QueueService> logger, WoodchuckDbContext context) { _logger = logger; _hostName = (from setting in context.MonitorSettings where setting.Key == "RabbitMQ-HostName" select setting.Value).FirstOrDefault(); _exchangeName = (from setting in context.MonitorSettings where setting.Key == "RabbitMQ-ExchangeName" select setting.Value).FirstOrDefault(); _queueName = (from setting in context.MonitorSettings where setting.Key == "RabbitMQ-QueueName" select setting.Value).FirstOrDefault(); _routingKey = (from setting in context.MonitorSettings where setting.Key == "RabbitMQ-RoutingKey" select setting.Value).FirstOrDefault(); }