public async Task RunAsync()
        {
            using (var bus = ServiceAccessor.Instance.GetService <IBusReceiver>())
            {
                await bus.ReceiveAsync(_container.QueueName, _container.ExchangeName, async (message) =>
                {
                    var consumer = _container.Get(message.ContentName);

                    if (consumer == null)
                    {
                        return;
                    }

                    var messageData = JsonConvert.DeserializeObject(message.Body, consumer.EventType);

                    using (var serviceScope = GetServiceScope(_config, messageData, consumer.Configure))
                    {
                        var provider = serviceScope.ServiceProvider;

                        await consumer.ProcessAsync(messageData, provider);
                    }
                });

                _shutdown.WaitOne();
            }
        }