コード例 #1
0
 public BehaviorController([FromServices] IBehaviorAppService behaviorAppService)
 {
     _behaviorAppService = behaviorAppService ?? throw new ArgumentNullException(nameof(behaviorAppService));
 }
コード例 #2
0
        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();
            }
        }