コード例 #1
0
        public static IServiceCollection AddRabbitMQBusService(this IServiceCollection services, Action <RabbitMQBusServiceOptionsBuilder> optionsAction)
        {
            services
            .AddSingleton(provider => {
                var builder = new RabbitMQBusServiceOptionsBuilder(provider);

                optionsAction?.Invoke(builder);

                return(builder.Build());
            })
            .AddSingleton(provider => new RabbitMQBusService(provider.GetService <RabbitMQBusServiceOptions>()))
            .AddTransient <IHostedService>(provider => provider.GetService <RabbitMQBusService>())
            .AddSingleton <IRabbitMQBusService>(provider => provider.GetService <RabbitMQBusService>())
            .AddSingleton <LifecycleController>()
            .AddSingleton <AsyncContextAccessor>()
            .AddSingleton <IRabbitMQChannelAccessor>(provider => provider.GetContextAccessor())
            .AddSingleton <IRabbitMQQueueAccessor>(provider => provider.GetContextAccessor())
            .AddTransient <IRabbitMQChannel>(provider => provider.GetService <IRabbitMQChannelAccessor>().Channel
                                             ?? provider.GetService <IRabbitMQBusService>().DefaultChannel)
            .AddTransient <IRabbitMQQueue>(provider => provider.GetService <IRabbitMQQueueAccessor>().Queue)
            .AddTransient <IPublishSubscribeChannel>(provider => provider.GetService <IRabbitMQChannel>())
            ;

            return(services);
        }
        public static RabbitMQBusServiceOptionsBuilder DefaultChannel(this RabbitMQBusServiceOptionsBuilder builder, object tag, Action <RabbitMQChannelOptionsBuilder> optionsAction)
        {
            tag = tag ?? new object();

            return(builder
                   .AddChannel(tag, optionsAction)
                   .DefaultChannel(tag));
        }
コード例 #3
0
        public static RabbitMQBusServiceOptionsBuilder ConnectionString(this RabbitMQBusServiceOptionsBuilder builder, string connectionString)
        {
            var uri = new Uri(connectionString);

            builder.ConfigureConnectionActions.Add(x => x.Uri = uri);

            return(builder);
        }
コード例 #4
0
        public static RabbitMQBusServiceOptionsBuilder ConfigureConnection(this RabbitMQBusServiceOptionsBuilder builder, Action <ConnectionFactory> action)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            builder.ConfigureConnectionActions.Add(action);

            return(builder);
        }
        public static RabbitMQBusServiceOptionsBuilder AddChannel(this RabbitMQBusServiceOptionsBuilder builder, object tag, Action <RabbitMQChannelOptionsBuilder> optionsAction)
        {
            if (optionsAction == null)
            {
                throw new ArgumentNullException(nameof(optionsAction));
            }

            if (tag == null)
            {
                tag = new object();
            }

            builder.ChannelsOptionsFactories.Add((messageTypeOptionsProviderBase) => {
                var channelOptionsBuilder = new RabbitMQChannelOptionsBuilder(builder.Services, tag, messageTypeOptionsProviderBase);
                optionsAction(channelOptionsBuilder);
                return(channelOptionsBuilder.Build());
            });

            return(builder);
        }
 public static RabbitMQBusServiceOptionsBuilder DefaultChannel(this RabbitMQBusServiceOptionsBuilder builder, Action <RabbitMQChannelOptionsBuilder> optionsAction)
 => builder.DefaultChannel(null, optionsAction);
        public static RabbitMQBusServiceOptionsBuilder DefaultChannel(this RabbitMQBusServiceOptionsBuilder builder, object tag)
        {
            builder.DefaultChannelTag = tag;

            return(builder);
        }
        public static RabbitMQBusServiceOptionsBuilder AddChannel(this RabbitMQBusServiceOptionsBuilder builder, Action <RabbitMQChannelOptionsBuilder> optionsAction)
        {
            builder.AddChannel(null, optionsAction);

            return(builder);
        }
        public static RabbitMQBusServiceOptionsBuilder Strict(this RabbitMQBusServiceOptionsBuilder builder)
        {
            builder.Strict = true;

            return(builder);
        }