public BasePublisher(IRabbitConfigurationProvider configurationProvider) { _config = configurationProvider.GetPublisherConfiguration(typeof(TMessage).Name); var connectionConfig = configurationProvider.GetConnectionConfigData(_config.Connection); _connectionFactory = new StandardConnectionFactory(connectionConfig); }
public async Task Run() { var receiverConfig = _configurationProvider.GetAsyncReceiverConfiguration("AsyncRecievers"); var connectionConfig = _configurationProvider.GetConnectionConfigData(receiverConfig.Connection); var connectionFactory = new StandardConnectionFactory(connectionConfig); IConnection connection = connectionFactory.GetConnection(); var channel = connection.CreateModel(); var amqpObjects = _configurationProvider.GetAmqpObjectsConfiguration(); channel.ConfigureExchanges(connectionConfig.Name, amqpObjects.ExchangeList); channel.ConfigureQueues(connectionConfig.Name, amqpObjects.QueueList); channel.ConfigureBindings(connectionConfig.Name, amqpObjects.BindingList); //foreach ... var consumer = new AsyncEventingBasicConsumer(channel); consumer.Received += async(ch, ea) => { var message = new Message() { RoutingKey = ea.RoutingKey, Headers = ea.BasicProperties.Headers, Body = ea.Body.ToArray() }; await ConsumeMessageAsync(message); channel.BasicAck(ea.DeliveryTag, false); await Task.Yield(); }; var consumerTag = channel.BasicConsume(receiverConfig.Queue, false, consumer); await Task.Delay(Timeout.Infinite); }