Пример #1
0
        public static MetroBusInitializer RegisterConsumer <TConsumer>(this MetroBusInitializer instance, string queueName, ILifetimeScope lifetimeScope) where TConsumer : class, IConsumer
        {
            Action <IRabbitMqBusFactoryConfigurator, IRabbitMqHost> action = (cfg, host) =>
            {
                if (string.IsNullOrEmpty(queueName))
                {
                    cfg.ReceiveEndpoint(host, ConfigureReceiveEndpoint <TConsumer>(instance, lifetimeScope));
                }
                else
                {
                    cfg.ReceiveEndpoint(host, queueName, ConfigureReceiveEndpoint <TConsumer>(instance, lifetimeScope));
                }
            };

            instance.MetroBusConfiguration.BeforeBuildActions.Add(action);

            return(instance);
        }
Пример #2
0
        public static MetroBusInitializer RegisterConsumer(this MetroBusInitializer instance, string queueName, ILifetimeScope lifetimeScope)
        {
            Action <IRabbitMqBusFactoryConfigurator, IRabbitMqHost> action = (cfg, host) =>
            {
                if (queueName == null)
                {
                    cfg.ReceiveEndpoint(host, ConfigureReceiveEndpoint(instance, lifetimeScope));
                }
                else
                {
                    cfg.ReceiveEndpoint(host, queueName, ConfigureReceiveEndpoint(instance, lifetimeScope));
                }
            };

            instance.MetroBusConfiguration.BeforeBuildActions.Add(action);

            return(instance);
        }
Пример #3
0
        private static Action <IRabbitMqReceiveEndpointConfigurator> ConfigureReceiveEndpoint <TConsumer>(MetroBusInitializer instance, ILifetimeScope lifetimeScope) where TConsumer : class, IConsumer
        {
            return(_ =>
            {
                if (instance.MetroBusConfiguration.UseConcurrentConsumerLimit != null)
                {
                    _.UseConcurrencyLimit(instance.MetroBusConfiguration.UseConcurrentConsumerLimit.Value);
                }

                if (instance.MetroBusConfiguration.PrefetchCount != null)
                {
                    _.PrefetchCount = instance.MetroBusConfiguration.PrefetchCount.Value;
                }

                _.Consumer <TConsumer>(lifetimeScope);
            });
        }