Esempio n. 1
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            try
            {
                while (true)
                {
                    if (!_connection.IsOpen)
                    {
                        _connection.Close();
                        _channel.Close();
                        Console.WriteLine("Not connected to RabbitMQ");
                        _connection = _factory.CreateConnection();
                        _channel    = _connection.CreateModel();
                        _channel.AddChannels();
                        RabbitMQExtensions.EnsureExistRabbitMqVirtualHost(_configurations, _connection);
                    }
                    else
                    {
                        Console.WriteLine("Connected to RabbitMQ...");
                    }

                    await Task.Delay(2000);
                }
            }
            catch
            {
                _stoppingCts = new CancellationTokenSource();

                await ExecuteAsync(_stoppingCts.Token);
            }
        }
Esempio n. 2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddSingleton <IConfiguration> (Configuration);

            var rabbitMQConfigurations = new RabbitMQConfigurations();

            new ConfigureFromConfigurationOptions <RabbitMQConfigurations>(
                Configuration.GetSection("RabbitMQConfigurations"))
            .Configure(rabbitMQConfigurations);


            var factory = new ConnectionFactory()
            {
                HostName    = rabbitMQConfigurations.HostName,
                Port        = rabbitMQConfigurations.Port,
                UserName    = rabbitMQConfigurations.UserName,
                Password    = rabbitMQConfigurations.Password,
                VirtualHost = rabbitMQConfigurations.VirtualHost
            };



            services.AddSingleton(factory);

            var connection = factory.CreateConnection();


            RabbitMQExtensions.EnsureExistRabbitMqVirtualHost(rabbitMQConfigurations, connection);



            var channel = connection.CreateModel();



            services.AddScopedServices();
            services.AddTransientServices();
            services.AddSingletonServices(ServiceProvider);

            channel.AddChannels();
            channel.ConfirmSelect();

            services.AddSingleton(rabbitMQConfigurations);
            services.AddLogging();
            services.AddSingleton(channel);
            services.AddSingleton(connection);
        }