static IBusControl Build(IBusFactory factory, IBusConfiguration busConfiguration, IEnumerable <ValidationResult> validationResult)
        {
            if (LogContext.Current == null)
            {
                LogContext.ConfigureCurrentLogContext();
            }

            busConfiguration.HostConfiguration.LogContext = LogContext.Current;

            var result = BusConfigurationResult.CompileResults(validationResult);

            try
            {
                var busReceiveEndpointConfiguration = factory.CreateBusEndpointConfiguration(x => x.ConfigureConsumeTopology = false);

                var host = busConfiguration.HostConfiguration.Build();

                var bus = new MassTransitBus(host, busConfiguration.BusObservers, busReceiveEndpointConfiguration);

                TaskUtil.Await(() => busConfiguration.BusObservers.PostCreate(bus));

                return(bus);
            }
            catch (Exception ex)
            {
                TaskUtil.Await(() => busConfiguration.BusObservers.CreateFaulted(ex));

                throw new ConfigurationException(result, "An exception occurred during bus creation", ex);
            }
        }
            public Handle(IHost host, HostHandle hostHandle, MassTransitBus bus, IBusObserver busObserver, ILogContext logContext)
            {
                _host        = host;
                _bus         = bus;
                _busObserver = busObserver;
                _logContext  = logContext;
                _hostHandle  = hostHandle;

                Ready = ReadyOrNot(hostHandle.Ready);
            }