private static void ConfigureBus(
            this IServiceCollectionBusConfigurator busConfigurator,
            string?queueName,
            MessagingOptions options)
        {
            if (options.Transport == MessagingTransport.InMemory)
            {
                busConfigurator.AddBus(provider => Bus.Factory.CreateUsingInMemory(cfg =>
                {
                    cfg.ReceiveEndpoint(e =>
                    {
                        e.ConfigureConsumers(provider);
                    });
                }));
            }
            else
            {
                busConfigurator.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
                {
                    cfg.Host(options.ServiceBus.Host, c =>
                    {
                        c.Username(options.ServiceBus.Username);
                        c.Password(options.ServiceBus.Password);
                    });

                    cfg.ReceiveEndpoint(queueName, e =>
                    {
                        e.ConfigureConsumers(provider);
                    });
                }));
            };
        }
        private static MessagingOptions GetOptions(this IMagicMediaServerBuilder builder)
        {
            MessagingOptions options = builder.Configuration.GetSection("MagicMedia:Messaging")
                                       .Get <MessagingOptions>();

            return(options);
        }
        public static IMagicMediaServerBuilder AddWorkerMessaging(
            this IMagicMediaServerBuilder builder)
        {
            MessagingOptions options = builder.GetOptions();

            builder.Services.AddMassTransit(s =>
            {
                s.AddWorkerConsumers();
                s.ConfigureBus(options.ServiceBus?.WorkerQueueName, options);
            });

            return(builder);
        }