public BehaviorController([FromServices] IBehaviorAppService behaviorAppService) { _behaviorAppService = behaviorAppService ?? throw new ArgumentNullException(nameof(behaviorAppService)); }
static void Main(string[] args) { // start DI container InitializeDIContainer(); // create a provider containing all services which exists whithin IServiceCollection instance.i var serviceProvider = services.BuildServiceProvider(); using (IMessageService messageService = new MessageService(serviceProvider.GetService <RabbitMQConfiguration>())) { // consume the queue from RabbitMQ Task.Run(() => messageService.ConsumeAsync(queueName, (s, e) => { try { var content = Encoding.UTF8.GetString(e.Body); var result = JsonConvert.DeserializeObject <BehaviorCreatedEvent>(content); // persists the new behavior inside every database with the domain application service IBehaviorAppService behaviorAppService = serviceProvider.GetService <IBehaviorAppService>(); var createBehaviorDto = new CreateBehaviorDto { IP = result.IP, PageName = result.PageName, UserAgent = result.UserAgent, PageParameters = result.PageParameters }; Task.Run(() => { try { behaviorAppService.CreateBehaviorAsync(createBehaviorDto); Console.WriteLine($"New behavior created for IP: {result.IP}."); } catch (Exception ex) { Console.WriteLine($"Error when creating behavior: {ex.Message}"); } }); } catch (Exception ex) { Console.WriteLine($"Error when pulling from queue: {ex.Message}"); } })); Console.WriteLine("Waiting for created behaviors.."); Console.CancelKeyPress += (o, e) => { Console.WriteLine("Leaving.."); _waitHandle.Set(); e.Cancel = true; }; _waitHandle.WaitOne(); } }