private static void ConfigureBus(ContainerBuilder builder) { builder.Register <IInstanceFactory>(context => { var options = context.Resolve <RabbitMqOptions>(); var configuration = context.Resolve <RawRabbitConfiguration>(); var namingConventions = new CustomNamingConventions(options.Namespace); return(RawRabbitFactory.CreateInstanceFactory(new RawRabbitOptions { DependencyInjection = ioc => { ioc.AddSingleton(options); ioc.AddSingleton(configuration); ioc.AddSingleton <INamingConventions>(namingConventions); }, Plugins = p => p .UseAttributeRouting() .UseRetryLater() .UpdateRetryInfo() .UseMessageContext <CorrelationContext>() .UseContextForwarding() })); }).SingleInstance(); // In case of 'BrokerUnreachableException' - this indicates that a RabbitMQ instance // isn't running. Please run 'docker-compose -f ./compose/infrastructure.yml up' to resolve this. builder.Register(context => context.Resolve <IInstanceFactory>().Create()); }
private static void ConfigureBus(ContainerBuilder builder) { builder.Register <IInstanceFactory>(context => { var options = context.Resolve <RabbitMqOptions>(); var configuration = context.Resolve <RawRabbitConfiguration>(); var namingConventions = new CustomNamingConventions(options.Namespace); return(RawRabbitFactory.CreateInstanceFactory(new RawRabbitOptions { DependencyInjection = ioc => { ioc.AddSingleton(options); ioc.AddSingleton(configuration); ioc.AddSingleton <INamingConventions>(namingConventions); }, Plugins = p => p .UseAttributeRouting() .UseRetryLater() .UpdateRetryInfo() .UseMessageContext <CorrelationContext>() .UseContextForwarding() })); }).SingleInstance(); builder.Register(context => context.Resolve <IInstanceFactory>().Create()); }
public static void AddRabbitMQServices(this ContainerBuilder builder) { builder.Register(context => { var configuration = context.Resolve <IConfiguration>(); var options = configuration.GetOptions <RabbitMqOptions>("rabbitMq"); return(options); }).SingleInstance(); builder.Register(context => { var configuration = context.Resolve <IConfiguration>(); var options = configuration.GetOptions <RawRabbitConfiguration>("rabbitMq"); return(options); }).SingleInstance(); var assembly = Assembly.GetCallingAssembly(); builder.RegisterAssemblyTypes(assembly) .AsClosedTypesOf(typeof(IEventHandler <>)) .InstancePerDependency(); builder.RegisterAssemblyTypes(assembly) .AsClosedTypesOf(typeof(ICommandHandler <>)) .InstancePerDependency(); builder.RegisterType <BusPublisher>().As <IBusPublisher>() .InstancePerDependency(); builder.Register <IInstanceFactory>(context => { var options = context.Resolve <RabbitMqOptions>(); var configuration = context.Resolve <RawRabbitConfiguration>(); var namingConventions = new CustomNamingConventions(options.Namespace); // var tracer = context.Resolve<ITracer> (); return(RawRabbitFactory.CreateInstanceFactory(new RawRabbitOptions { DependencyInjection = ioc => { ioc.AddSingleton(options); ioc.AddSingleton(configuration); ioc.AddSingleton <INamingConventions>(namingConventions); // ioc.AddSingleton (tracer); }, Plugins = p => p .UseAttributeRouting() .UseRetryLater() .UpdateRetryInfo() .UseMessageContext <CorrelationContext>() .UseContextForwarding() // .UseJaeger (tracer) })); }).SingleInstance(); builder.Register(context => context.Resolve <IInstanceFactory>().Create()); }
private static void ConfigureBus(IServiceCollection services, IConfiguration configuration) { var rawRabbitOptions = configuration.GetOptions <RabbitMqOptions>(SectionName); var rawRabbitConfiguration = configuration.GetOptions <RawRabbitConfiguration>(SectionName); var namingConventions = new CustomNamingConventions(rawRabbitOptions.Namespace); var options = new RawRabbitOptions { DependencyInjection = ioc => { ioc.AddSingleton(rawRabbitOptions); ioc.AddSingleton(rawRabbitConfiguration); ioc.AddSingleton <INamingConventions>(namingConventions); }, Plugins = p => p.UseAttributeRouting().UseMessageContext <CorrelationContext>().UseContextForwarding() }; services.AddRawRabbit(options); }
public static void AddRabbitMq(this ContainerBuilder builder) { builder.Register(context => { var configuration = context.Resolve <IConfiguration>(); var options = new RabbitMqOptions(); configuration.GetSection("rabbitmq").Bind(options); return(options); }).SingleInstance(); builder.Register(context => { var configuration = context.Resolve <IConfiguration>(); var options = new RawRabbitConfiguration(); configuration.GetSection("rabbitmq").Bind(options); return(options); }).SingleInstance(); builder.Register <IInstanceFactory>(context => { var options = context.Resolve <RabbitMqOptions>(); var configuration = context.Resolve <RawRabbitConfiguration>(); var namingConventions = new CustomNamingConventions(options.Namespace); var tracer = context.Resolve <ITracer>(); return(RawRabbitFactory.CreateInstanceFactory(new RawRabbitOptions { DependencyInjection = ioc => { ioc.AddSingleton(options); ioc.AddSingleton(configuration); ioc.AddSingleton <INamingConventions>(namingConventions); ioc.AddSingleton(tracer); }, ClientConfiguration = options, Plugins = p => p .UseMessageContext <CorrelationContext>() .UseContextForwarding() .UseJaeger(tracer) })); }).SingleInstance(); builder.Register(context => context.Resolve <IInstanceFactory>().Create()); }
private static void ConfigureBus <TContext>(IConveyBuilder builder, Func <IRabbitMqPluginRegister, IRabbitMqPluginRegister> plugins = null) where TContext : ICorrelationContext, new() { builder.Services.AddSingleton <IInstanceFactory>(serviceProvider => { var register = plugins?.Invoke(new RabbitMqPluginRegister(serviceProvider)); var options = serviceProvider.GetService <RabbitMqOptions>(); var configuration = serviceProvider.GetService <RawRabbitConfiguration>(); var namingConventions = new CustomNamingConventions(options.Namespace); return(RawRabbitFactory.CreateInstanceFactory(new RawRabbitOptions { DependencyInjection = ioc => { register?.Register(ioc); ioc.AddSingleton(options); ioc.AddSingleton(configuration); ioc.AddSingleton(serviceProvider); ioc.AddSingleton <INamingConventions>(namingConventions); ioc.AddSingleton <ISerializer, Serializer <TContext> >(ctx => new Serializer <TContext>(ctx.GetService <JsonSerializer>())); }, Plugins = p => { register?.Register(p); p.UseAttributeRouting() .UseRetryLater() .UpdateRetryInfo() .UseMessageContext <TContext>() .UseContextForwarding(); if (options.MessageProcessor?.Enabled == true) { p.ProcessUniqueMessages(); } } })); }); builder.Services.AddTransient(serviceProvider => serviceProvider.GetService <IInstanceFactory>().Create()); }
private static void ConfigureBus(ContainerBuilder builder) { builder.Register <IInstanceFactory>(context => { var options = context.Resolve <RabbitMqOptions>(); var configuration = context.Resolve <RawRabbitConfiguration>(); var namingConventions = new CustomNamingConventions(options.Namespace); return(RawRabbitFactory.CreateInstanceFactory(new RawRabbitOptions { DependencyInjection = ioc => { ioc.AddSingleton(options); ioc.AddSingleton(configuration); ioc.AddSingleton <INamingConventions>(namingConventions); } })); }).SingleInstance(); builder.Register(context => context.Resolve <IInstanceFactory>().Create()); }