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)); }
public static RabbitMQBusServiceOptionsBuilder ConnectionString(this RabbitMQBusServiceOptionsBuilder builder, string connectionString) { var uri = new Uri(connectionString); builder.ConfigureConnectionActions.Add(x => x.Uri = uri); return(builder); }
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); }