Beispiel #1
0
        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);
        }
Beispiel #3
0
        public static void UseRabbitMqEventBus(this ShriekOptionBuilder builder, Action <RabbitMqOptions> optionAction)
        {
            var option = new EventBusRabbitMqOptions();

            optionAction(option);

            AddRabbitMq(builder, option);

            builder.Services.AddTransient <IEventBus, RabbitMqEventBus>();
        }
Beispiel #4
0
        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;
 }
Beispiel #8
0
        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);
        }