Beispiel #1
0
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger <EventBusRabbitMQ> logger,
                         IServiceProvider provider, IEventBusSubscriptionsManager subsManager, string queueName = null,
                         int retryCount = 5)
 {
     _persistentConnection =
         persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     _subsManager                 = subsManager ?? new InMemoryEventBusSubscriptionsManager();
     _queueName                   = queueName;
     _consumerChannel             = CreateConsumerChannel();
     _serviceProvider             = provider;
     _retryCount                  = retryCount;
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
Beispiel #2
0
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger <EventBusRabbitMQ> logger,
                         ILifetimeScope autofac, ISubscriptionManager subsManager, string queueName = null, int retryCount = 5,
                         string xchangeSuffix = "", string xchangeType = "direct")
 {
     _logger               = logger ?? throw new ArgumentNullException(nameof(logger));
     _xchangeType          = xchangeType;
     RABITMQ_EXCHANGE     += xchangeSuffix;
     _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _subsManager          = subsManager ?? new SubscriptionManager();
     _queueName            = queueName;
     _consumerChannel      = CreateConsumerChannel();
     _autofac              = autofac;
     _retryCount           = retryCount;
 }
Beispiel #3
0
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger <EventBusRabbitMQ> logger,
                         ILifetimeScope autofac, IEventBusSubscriptionsManager subsManager, string queueName = null,
                         int retryCount = 5)
 {
     _persistentConnection =
         persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     _subsManager                 = subsManager ?? new InMemoryEventBusSubscriptionsManager();
     _consumerChannel             = CreateConsumerChannel();
     _subsManager.OnEventRemoved += OnEventRemoved;
     _autofac                     = autofac;
     _queueName                   = queueName;
     _retryCount                  = retryCount;
 }
Beispiel #4
0
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger <EventBusRabbitMQ> logger,
                         IServiceScopeFactory serviceScopeFactory, IEventBusSubscriptionsManager subsManager, string queueName = null, int retryCount = 5)
 {
     _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     _subsManager                 = subsManager ?? new InMemoryEventBusSubscriptionsManager();
     _handlers                    = new Dictionary <string, List <Type> >();
     _serviceScopeFactory         = serviceScopeFactory;
     _eventTypes                  = new List <Type>();
     _queueName                   = queueName;
     _consumerChannel             = CreateConsumerChannel();
     _retryCount                  = retryCount;
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
Beispiel #5
0
 public RabbitMQEventBus(IConfiguration configuration, ILogger <RabbitMQEventBus> logger, IEventStorage eventStorage)
 {
     this.connection = new RabbitMQPersistentConnection(configuration, logger);
     policy          = Policy.Handle <BrokerUnreachableException>()
                       .Or <SocketException>()
                       .Or <InvalidOperationException>()
                       .WaitAndRetry(retryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (ex, time) =>
     {
         logger.LogWarning(ex.ToString());
     });
     this.logger          = logger ?? throw new ArgumentNullException(nameof(logger));
     this.consumerChannel = CreateConsumerChannel();
     this.eventStorage    = eventStorage;
 }
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger <EventBusRabbitMQ> logger, ILifetimeScope autofac, IEventBusSubscriptionsManager subsManager, string exchangeName, string queueName = null, int retryCount = 5)
 {
     BROKER_NAME           = exchangeName;
     AUTOFAC_SCOPE_NAME    = exchangeName;
     _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     _subsManager                 = subsManager ?? new InMemoryEventBusSubscriptionsManager();
     _queueName                   = queueName;
     _consumerChannel             = CreateConsumerChannel();
     _autofac                     = autofac;
     _retryCount                  = retryCount;
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
     _logger.LogInformation("EventBusRabbitMQ Init: " + exchangeName);
 }
Beispiel #7
0
        public EventBusRabbitMQ(IRabbitMQPersistentConnection rabbitMQPersistentConnection, ILogger <EventBusRabbitMQ> logger,
                                IEventBusSubscriptionsManager eventBusSubscriptionsManager, IServiceScopeFactory serviceScope, ILifetimeScope lifetimeScope, string queueName, int retries = 5)
        {
            _rabbitMQPersistentConnection = rabbitMQPersistentConnection ?? throw new ArgumentNullException(nameof(rabbitMQPersistentConnection));
            _logger        = logger;
            _retryCount    = retries;
            _queueName     = queueName;
            _serviceScope  = serviceScope;
            _lifetimeScope = lifetimeScope;
            _eventBusSubscriptionsManager = eventBusSubscriptionsManager ?? new InMemoryEventBusSubscriptionsManager();

            _consumerChannel = CreateConsumerChannel();
            _eventBusSubscriptionsManager.OnEventRemoved += SubsManager_OnEventRemoved;
        }
Beispiel #8
0
        public EventBusRabbit(/*IRabbitMQPersistentConnection persistentConnection*/
            /*string queueName = null, int retryCount = 5*/)
        {
            var _connection = new ConnectionFactory()
            {
                UserName = "******",
                Password = "******",
                HostName = "127.0.0.1"
            };

            _persistentConnection = _persistentConnection ?? new DefaultRabbitMQPersistentConnection(_connection);// persistentConnection;
            //_queueName = queueName;
            //_retryCount = retryCount;
        }
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection,
                         ILogger <EventBusRabbitMQ> logger,
                         ILifetimeScope autofac,
                         IEventBusSubscriptionsManager subsManager,
                         string queueName = null,
                         int retryCount   = 5)
     : base(logger, subsManager, autofac, appName: APP_NAME, autofacScopeName: AUTOFAC_SCOPE_NAME)
 {
     _persistentConnection        = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _queueName                   = queueName;
     _consumerChannel             = CreateConsumerChannel();
     _retryCount                  = retryCount;
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
 public EventBusRabbitMQ(
     IRabbitMQPersistentConnection persistentConnection,
     ILogger logger,
     IEventBusSubscriptionsManager subsManager,
     IIntegrationEventHandlerFactory integrationEventHandlerFactory,
     string queueName = null, int retryCount = 5)
 {
     _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
     _integrationEventHandlerFactory = integrationEventHandlerFactory;
     _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
     _queueName   = queueName;
     _retryCount  = retryCount;
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
Beispiel #11
0
 public EventBusRabbitMQ(
     ILogger <EventBusRabbitMQ> logger,
     IRabbitMQPersistentConnection persistentConnection,
     IEventBusSubscriptionsManager subsManager,
     IServiceScopeFactory serviceScopeFactory,
     EventBusOptions options)
 {
     _logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     _options                     = options;
     _serviceScopeFactory         = serviceScopeFactory;
     _persistentConnection        = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _subsManager                 = subsManager ?? new InMemoryEventBusSubscriptionsManager();
     _consumerChannel             = CreateConsumerChannel();
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
Beispiel #12
0
 internal EventBusBase(ILogger <TEventBus> logger, IServiceProvider autofac, IEventSeralize seralize, IRabbitMQPersistentConnection persistentConnection, int cacheCount = 100)
 {
     _conn              = persistentConnection ?? throw new ArgumentNullException(nameof(IRabbitMQPersistentConnection));
     _conn.ConnectFail += Conn_ConnectFail;
     ConnectionName     = _conn.Name;
     _logger            = logger ?? throw new ArgumentNullException(nameof(ILogger <TEventBus>));
     __seralize         = seralize ?? throw new ArgumentNullException(nameof(IEventSeralize));
     consumerInfos      = new List <ConsumerConfig <TEventBus, TSub> >();
     hanlerCacheMgr     = new EventHanlerCacheMgr(cacheCount, autofac);
     _pub_sub           = persistentConnection.SubsFactory.GetOrCreateByQueue("publish");
     channels           = new ThreadDispatcher <QueueItem <TEventBus, TSub> >(StartProcess, Math.Min(8, Environment.ProcessorCount / 2))
     {
         UnCatchedException = LogError
     };
 }
Beispiel #13
0
 public RabbitBus(
     IAdvancedBus advanced,
     IPubSub pubSub,
     IRpc rpc,
     ISendReceive sendReceive,
     IScheduler scheduler,
     IRabbitMQPersistentConnection connection)
 {
     _advanced    = advanced;
     _pubsub      = pubSub;
     _rpc         = rpc;
     _sendreceive = sendReceive;
     _scheduler   = scheduler;
     _connection  = connection;
 }
Beispiel #14
0
        public RabbitMQTest()
        {
            _services = new ServiceCollection();
            _services.AddLinFx()
            .AddRabbitMQ(options =>
            {
                options.Host     = "127.0.0.1";
                options.UserName = "******";
                options.Password = "******";
            });

            var container = _services.BuildServiceProvider();

            _persistentConnection = container.GetService <IRabbitMQPersistentConnection>();
        }
Beispiel #15
0
 public EventBusRabbitMQ(
     IRabbitMQPersistentConnection persistentConnection,
     IEventBusSubscriptionsManager subscriptionsManager,
     ILifetimeScope autofac,
     string queueName = null,
     int retryCount   = 5)
 {
     _persistentConnection = persistentConnection;
     _subscriptionsManager = subscriptionsManager;
     _autofac         = autofac;
     _retryCount      = retryCount;
     _queueName       = queueName;
     _consumerChannel = CreateConsumerChannel();
     _subscriptionsManager.OnEventRemoved += OnEventRemoved;
 }
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="persistentConnection"></param>
 /// <param name="logger"></param>
 /// <param name="autofac"></param>
 /// <param name="subsManager"></param>
 /// <param name="options"></param>
 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;
     _consumerChannels            = new Dictionary <string, IModel>();
     _autofac                     = autofac;
     _prefetchCount               = _options.PrefetchCount;
     _retryCount                  = _options.RetryCount;
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection,
                         ILogger <EventBusRabbitMQ> logger,
                         IServiceCollection services,
                         Type type,
                         string queueName = null,
                         int retryCount   = 5)
 {
     _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _logger          = logger ?? throw new ArgumentNullException(nameof(logger));
     _services        = services ?? throw new ArgumentNullException(nameof(services));
     _type            = type ?? throw new ArgumentNullException(nameof(type));
     _queueName       = queueName;
     _consumerChannel = CreateConsumerChannel();
     StartBasicConsume();
     _retryCount = retryCount;
 }
Beispiel #18
0
        static void BootStrap()
        {
            var assambly = Assembly.GetAssembly(typeof(Program));
            var config   = Configuration.Create()
                           .UseAutofac()
                           .RegisterCommonComponents()
                           .UseLog4Net()
                           .UseJsonNet()
                           .UseRabbitMQ("10.3.80.42", "/hr", "admin", "admin");


            using (var scope = ObjectContainer.Current.BeginLifetimeScope())
            {
                _rabbitMQPersistentConnection = scope.Resolve <IRabbitMQPersistentConnection>();
            }
        }
Beispiel #19
0
 public RabbitMQEventBus(
     IServiceProvider serviceProvider,
     IRabbitMQPersistentConnection persistentConnection,
     TypeKeyDirectory typeKeyDirectory,
     string exchangeName,
     string queueName,
     int retryCount)
 {
     this.serviceProvider      = serviceProvider;
     this.persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     this.typeKeyDirectory     = typeKeyDirectory;
     this.exchangeName         = exchangeName;
     this.queueName            = queueName;
     this.retryCount           = retryCount;
     _consumerChannel          = CreateConsumerChannel();
 }
        //private string _queueName;

        public EventBusRabbitMQ(IServiceProvider serviceProvider, int retryCount = 5)
        {
            _serviceProvider = serviceProvider;

            var logger = _serviceProvider.GetRequiredService <ILogger <EventBusRabbitMQ> >();
            var persistentConnection = _serviceProvider.GetRequiredService <IRabbitMQPersistentConnection>();
            var subsManager          = _serviceProvider.GetRequiredService <IEventBusSubscriptionsManager>();

            _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
            _logger      = logger ?? throw new ArgumentNullException(nameof(logger));
            _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
            //_consumerChannel = CreateConsumerChannel();
            _consumerChannels            = new Dictionary <string, IModel>();
            _retryCount                  = retryCount;
            _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
        }
Beispiel #21
0
 /// <summary>
 /// RabbitMQ事件总线
 /// </summary>
 /// <param name="logger">日志</param>
 /// <param name="persistentConnection">RabbitMQ持久连接</param>
 /// <param name="autofac">autofac容器</param>
 /// <param name="subsManager">事件总线订阅管理器</param>
 /// <param name="queueName">队列名称</param>
 /// <param name="retryCount">重试次数</param>
 public RabbitMQEventBus(
     ILogger <RabbitMQEventBus> logger,
     IRabbitMQPersistentConnection persistentConnection,
     ILifetimeScope autofac,
     IEventBusSubscriptionsManage subsManager,
     int retryCount, string queueName)
 {
     _logger = logger;
     _persistentConnection = persistentConnection;
     _subsManager          = subsManager;
     _queueName            = queueName;
     _consumerChannel      = CreateConsumerChannel();
     _autofac    = autofac;
     _retryCount = retryCount;
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
        /// <summary>
        /// Do a passive exchange declaration.
        /// Or
        /// (Spec method) Declare an exchange.
        ///  This method performs a "passive declare" on an exchange, which verifies whether. It will do nothing if the exchange already exists and result in a channel-levelprotocol exception (channel closure) if not.
        /// </summary>
        /// <param name="persistentConnection"></param>
        /// <param name="exchange"></param>
        /// <param name="type"></param>
        /// <param name="durable"></param>
        /// <param name="autoDelete"></param>
        /// <param name="arguments"></param>
        public static IModel ExchangeDeclare(this IRabbitMQPersistentConnection persistentConnection, string exchange, string type = ExchangeType.Topic, bool durable = true, bool autoDelete = false, IDictionary <string, object> arguments = null)
        {
            IModel channel;

            try
            {
                channel = persistentConnection.CreateModel();
                channel.ExchangeDeclarePassive(exchange);
            }
            catch
            {
                channel = persistentConnection.CreateModel();
                channel.ExchangeDeclare(exchange, type, durable, autoDelete, arguments);
            }
            return(channel);
        }
Beispiel #23
0
 /// <summary>
 /// RabbitMQ事件总线
 /// </summary>
 /// <param name="persistentConnection">RabbitMQ持久连接</param>
 /// <param name="logger">日志</param>
 /// <param name="service">生命周期</param>
 /// <param name="subsManager">订阅管理器</param>
 /// <param name="queueName">队列名称</param>
 /// <param name="exchangeName">交换机名称</param>
 /// <param name="retryCount">重试次数</param>
 /// <param name="autoListening"></param>
 public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger <EventBusRabbitMQ> logger, IServiceProvider service, IEventBusSubscriptionsManager subsManager, string queueName, string exchangeName = "MateralTFMSEventBusExchange", int retryCount = 5, bool autoListening = true)
 {
     _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
     _logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     _subsManager                 = subsManager ?? new InMemoryEventBusSubscriptionsManager();
     _queueName                   = queueName;
     _service                     = service;
     _retryCount                  = retryCount;
     _exchangeName                = exchangeName;
     _consumerChannel             = CreateConsumerChannel();
     _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
     if (autoListening)
     {
         StartListening();
     }
 }
        public EventBusRabbitMQ(IServiceScopeFactory serviceScopeFactory,
                                IRabbitMQPersistentConnection persistentConnection,
                                ILogger <EventBusRabbitMQ> logger,
                                IEventBusSubscriptionsManager subsManager,
                                string queueName = null,
                                int retryCount   = 5)
        {
            this.serviceScopeFactory  = serviceScopeFactory;
            this.persistentConnection = persistentConnection;
            this.logger      = logger;
            this.subsManager = subsManager;

            this.queueName              = queueName;
            this.retryCount             = retryCount;
            subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
        }
        public RabbitMQEventSubscriber(
            IRabbitMQPersistentConnection persistentConnection,
            string exchangeName,
            string queueName,
            ILogger <RabbitMQEventSubscriber> logger,
            int retryCount
            )
        {
            _persistentConnection = persistentConnection;
            _exchangeName         = exchangeName;
            _queueName            = queueName;
            _logger     = logger;
            _retryCount = retryCount;

            _consumerChannel = CreateConsumerChannel();
        }
Beispiel #26
0
        public OfficeServiceClient(
            [FromServices] IRabbitMQPersistentConnection rabbitMQPersistentConnection,
            [FromServices] ILogger <OfficeServiceClient> logger)
        {
            this.logger = logger;
            logger.LogInformation("OfficeServiceClient is created");

            channel = rabbitMQPersistentConnection.CreateModel();

            var correlationId = Guid.NewGuid().ToString();

            properties = channel.CreateBasicProperties();
            properties.CorrelationId = correlationId;
            properties.ReplyTo       = ResponseQueueName;

            consumer = new EventingBasicConsumer(channel);

            channel.ExchangeDeclare(RequestExchange, ExchangeType.Direct);
            channel.ExchangeDeclare(ResponseExchange, ExchangeType.Direct);

            channel.QueueDeclare(RequestQueueName, false, false, true);
            channel.QueueDeclare(ResponseQueueName, false, false, true);

            channel.QueueBind(ResponseQueueName, ResponseExchange, ResponseBindingKeys[0]);
            channel.QueueBind(ResponseQueueName, ResponseExchange, ResponseBindingKeys[1]);
            channel.QueueBind(RequestQueueName, RequestExchange, RequestBindingKey);



            consumer.Received += (model, ea) =>
            {
                var body     = ea.Body;
                var response = Encoding.UTF8.GetString(body.ToArray());
                var feedback = JsonConvert.DeserializeObject <Response <GetOfficeResponse> >(response);
                if (ea.BasicProperties.CorrelationId == correlationId)
                {
                    Responses.Add(feedback);
                    logger.LogInformation("Office is received");
                }
                else
                {
                    logger.LogInformation(
                        "Message with correlation id '{CorrelationId}' does not match the office client correlation id",
                        ea.BasicProperties.CorrelationId);
                }
            };
        }
        public RabbitMQEventSubscriber(
            ILogger <RabbitMQEventSubscriber> logger,
            IOptions <RabbitMQOptions> options,
            IServiceProvider serviceProvider,
            IRabbitMQPersistentConnection persistentConnection,
            IEventBusSubscriptionsManager subsManager,
            IEnumerable <SubscriberInfo> subscribers)
        {
            _logger               = logger ?? throw new ArgumentNullException(nameof(logger));
            _options              = options.Value;
            _serviceProvider      = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
            _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
            _subsManager          = subsManager ?? throw new ArgumentNullException(nameof(subsManager));
            _subscribers          = subscribers;

            _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
        }
Beispiel #28
0
        public EventBusRabbitMQ(RabbitMQConfig config,
                                IRabbitMQPersistentConnection persistentConnection,
                                ILogger <EventBusRabbitMQ> logger,
                                IEventBusSubscriptionsManager subsManager,
                                ILifetimeScope autofac,
                                string queueName = null)
        {
            _config = config ?? throw new ArgumentNullException(nameof(config));
            _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
            _logger      = logger ?? throw new ArgumentNullException(nameof(logger));
            _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();

            _queueName                   = queueName;
            _consumerChannel             = CreateConsumerChannel();
            _autofac                     = autofac;
            _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
        }
Beispiel #29
0
 public EventBusRabbitMQ(
     IRabbitMQPersistentConnection persistentConnection,
     ILogger <EventBusRabbitMQ> logger,
     ILifetimeScope lifetimeScope,
     IEventBusSubscriptionsManager subscriptionManager,
     string queueName = null,
     int retryCount   = 5)
 {
     _persistentConnection = persistentConnection;
     _logger              = logger;
     _lifetimeScope       = lifetimeScope;
     _subscriptionManager = subscriptionManager;
     _queueName           = queueName;
     _retryCount          = retryCount;
     _consumerChannel     = CreateConsumerChannel();
     _subscriptionManager.OnEventRemoved += SubsManager_OnEventRemoved;
 }
Beispiel #30
0
 public EventBusRabbitMQ(
     string brokerName,
     IRabbitMQPersistentConnection persistentConnection,
     IEventBusSubscriptionsManager subsManager,
     IIntegrationEventHandlerFactory integrationEventHandlerFactory,
     IEventLogger eventLogger,
     ILogger logger) : this(
         brokerName,
         string.Empty,
         0,
         persistentConnection,
         subsManager,
         integrationEventHandlerFactory,
         eventLogger,
         logger)
 {
 }