Example #1
0
    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);
    }