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); } }
public IActionResult ShowQueueItem( [FromServices] RabbitMQConfigurations configurations, [FromServices] ConnectionFactory factory, [FromServices] IConnection connection, [FromServices] IConsumeRabbitMQService consumer, string kitchenAreaName, string status) { try { using (var channel = connection.CreateModel()) { var queue = channel.QueueDeclare(queue: kitchenAreaName + " - " + status, durable: false, exclusive: false, autoDelete: false, arguments: null); var result = RabbitMQExtensions.GetAllMessages(queue, configurations, queue.QueueName); if (result == null) { return(BadRequest()); } return(Ok(result)); } } catch (Exception ex) { return(BadRequest()); } }
// 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); }