public RabbitMqEventBus(IMessagePublisher messagePublisher, EventBusRabbitMqOptions options) { this.channel = options.Channel; this.options = options; options.MessagePublisher = messagePublisher; }
public static EventBusOptionsBuilder UseRabbitMQ(this EventBusOptionsBuilder optionsBuilder, ILinFxBuilder builder, Action <EventBusRabbitMqOptions> optionsAction) { Check.NotNull(optionsAction, nameof(optionsAction)); var options = new EventBusRabbitMqOptions(); optionsAction?.Invoke(options); builder.Services.AddSingleton((Func <IServiceProvider, IRabbitMQPersistentConnection>)(sp => { var logger = sp.GetRequiredService <ILogger <DefaultRabbitMQPersistentConnection> >(); var factory = new ConnectionFactory { UserName = options.UserName, Password = options.Password, HostName = options.Host, }; return(new DefaultRabbitMQPersistentConnection((IConnectionFactory)factory, (ILogger <DefaultRabbitMQPersistentConnection>)logger)); })); builder.Services.AddSingleton <IEventBus, EventBusRabbitMQ>(sp => { var logger = sp.GetRequiredService <ILogger <EventBusRabbitMQ> >(); var rabbitMQPersistentConnection = sp.GetRequiredService <IRabbitMQPersistentConnection>(); var iServiceScopeFactory = sp.GetRequiredService <IServiceScopeFactory>(); var eventBusSubcriptionsManager = sp.GetRequiredService <IEventBusSubscriptionsManager>(); return(new EventBusRabbitMQ(logger, rabbitMQPersistentConnection, eventBusSubcriptionsManager, iServiceScopeFactory, optionsBuilder.Options)); }); return(optionsBuilder); }
public static void UseRabbitMqEventBus(this ShriekOptionBuilder builder, Action <RabbitMqOptions> optionAction) { var option = new EventBusRabbitMqOptions(); optionAction(option); AddRabbitMq(builder, option); builder.Services.AddTransient <IEventBus, RabbitMqEventBus>(); }
public static void AddEventBusRabbitMq(this IServiceCollection services, Action <EventBusRabbitMqOptions> configureOptions) { var options = new EventBusRabbitMqOptions(); configureOptions(options); services.Configure(configureOptions); services.AddSingleton <IRabbitMqPersistentConnection, DefaultRabbitMqPersistentConnection>(); services.AddEventBus <EventBusRabbitMq>(); }
public DefaultRabbitMQPersistentConnection(IOptions <EventBusRabbitMqOptions> options, ILogger <DefaultRabbitMQPersistentConnection> logger) { _options = options.Value; _connectionFactory = new ConnectionFactory { HostName = _options.HostName, Port = _options.Port, UserName = _options.UserName, Password = _options.Password, VirtualHost = _options.VirtualHost, DispatchConsumersAsync = true }; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _retryCount = _options.RetryCount; }
public static EventBusBuilder AddRabbitMq(this EventBusBuilder builder, Action <EventBusRabbitMqOptions> options = null) { builder.Service.AddSingleton <IMessagePublisher, RabbitMqMessagePublisher>(); builder.Service.AddSingleton <IMessageSubscribe, RabbitMqMessageSubscribe>(); if (options == null) { return(builder); } var option = new EventBusRabbitMqOptions(); options.Invoke(option); builder.Service.Configure(option.RabbitMqOptions); builder.Service.Configure(options); return(builder); }
public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger <EventBusRabbitMQ> logger, IServiceProvider autofac, IEventBusSubscriptionsManager subsManager, IOptions <EventBusRabbitMqOptions> options) { _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _subsManager = subsManager ?? throw new ArgumentNullException(nameof(subsManager)); _options = options.Value; _exchangeName = _options.ExchangeName; _queueName = _options.QueueName; _type = _options.Type; _consumerChannels = new Dictionary <string, IModel>(); _autofac = autofac; _prefetchCount = _options.PrefetchCount; _retryCount = _options.RetryCount; _subsManager.OnEventRemoved += SubsManager_OnEventRemoved; }
public static EventBusBuilder AddRabbitMq(this EventBusBuilder builder, Action <EventBusRabbitMqOptions> optionAction) { optionAction = optionAction ?? throw new AggregateException(nameof(optionAction)); var option = new EventBusRabbitMqOptions(); optionAction.Invoke(option); builder.Service.AddRabbitMq(options => { options.Connection = option.RabbitMqConnection; }); builder.Service.TryAddSingleton <IMessagePublisher, RabbitMqMessagePublisher>(); builder.Service.TryAddSingleton <IMessageSubscribe, RabbitMqMessageSubscribe>(); builder.Service.Configure(optionAction); return(builder); }