public AdaptationResponseConsumer(IAdaptationResponseCollection collection, IArchiveManager archiveManager, IErrorReportGenerator errorReportGenerator, IFileManager fileManager, IArchiveProcessorConfig config, ILogger <AdaptationResponseConsumer> logger) { _collection = collection ?? throw new ArgumentNullException(nameof(collection)); _archiveManager = archiveManager ?? throw new ArgumentNullException(nameof(archiveManager)); _errorReportGenerator = errorReportGenerator ?? throw new ArgumentNullException(nameof(errorReportGenerator)); _fileManager = fileManager ?? throw new ArgumentNullException(nameof(fileManager)); _config = config ?? throw new ArgumentNullException(nameof(config)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public AdaptationRequestSender(IResponseProcessor responseProcessor, IAdaptationResponseCollection collection, ILogger <AdaptationRequestSender> logger, IArchiveProcessorConfig config) { _responseProcessor = responseProcessor ?? throw new ArgumentNullException(nameof(responseProcessor)); _collection = collection ?? throw new ArgumentNullException(nameof(collection)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); if (config == null) { throw new ArgumentNullException(nameof(config)); } var connectionFactory = new ConnectionFactory() { HostName = config.AdaptationRequestQueueHostname, Port = config.AdaptationRequestQueuePort, UserName = config.MessageBrokerUser, Password = config.MessageBrokerPassword }; _connection = connectionFactory.CreateConnection(); _channel = _connection.CreateModel(); _consumer = new EventingBasicConsumer(_channel); _channel.BasicConsume(_consumer, "amq.rabbitmq.reply-to", autoAck: true); _consumer.Received += (model, ea) => { try { _receivedMessageCount++; _logger.LogInformation($"Received message: Exchange Name: '{ea.Exchange}', Routing Key: '{ea.RoutingKey}'"); var headers = ea.BasicProperties.Headers; var body = ea.Body.ToArray(); var response = _responseProcessor.Process(headers); _collection.Add(response); } catch (Exception ex) { _logger.LogError(ex, $"Error Processing 'input'"); _collection.Add(new KeyValuePair <Guid, AdaptationOutcome>(Guid.Empty, AdaptationOutcome.Error)); } }; _logger.LogInformation($"AdaptationRequestSender Connection established to {config.AdaptationRequestQueueHostname}"); }