public static ContainerBuilder RegisterApiBus(this ContainerBuilder builder, IConfiguration configuration) { builder.Register(p => { var appName = $"{configuration.GetValue<string>(Constants.Configuration.Service.Name)}";//.{Assembly.GetEntryAssembly().GetName().Name}"; var _rabbitMQSettings = new Infrastructure.Configuration.Settings.RabbitMQ.Connection(configuration); var client = RabbitHole.Factories.ClientFactory .Create(appName) .WithConnection(c => c.WithHostName($"{_rabbitMQSettings.Host}:{_rabbitMQSettings.Port}") .WithVirtualHost(_rabbitMQSettings.VirtualHost) .WithPassword(_rabbitMQSettings.Password) .WithUserName(_rabbitMQSettings.User)); return(client); }).As <IClient>().InstancePerLifetimeScope(); builder.Register(p => { var _queuesSettings = new List <Infrastructure.Configuration.Settings.RabbitMQ.Queue>(); configuration.GetSection(Constants.Configuration.Broker.Queues).Bind(_queuesSettings); return(_queuesSettings); }).As <IList <Infrastructure.Configuration.Settings.RabbitMQ.Queue> >() .SingleInstance(); builder.RegisterAssemblyTypes(typeof(IAmApiBus).GetTypeInfo().Assembly) .Where(t => typeof(IAmApiBus).IsAssignableFrom(t)) .AsImplementedInterfaces(); //builder.Register(p=>new TodoBus(p.Resolve<IClient>())).As<IAmTodoBus>(); return(builder); }
private void InitializeBroker() { _rabbitMQSettings = new Connection(_configurationRoot); _consumerBrokerClient = RabbitHole.Factories.ClientFactory .Create(_serviceFullName) .WithConnection(c => c.WithHostName($"{_rabbitMQSettings.Host}:{_rabbitMQSettings.Port}") .WithVirtualHost(_rabbitMQSettings.VirtualHost) .WithPassword(_rabbitMQSettings.Password) .WithUserName(_rabbitMQSettings.User)); InitializeConsumerBroker(); }