Example #1
0
 public ConsumerWorker(IPooledObjectPolicy <IModel> channelPolicy, IBus <SubscribeDto> bus, ILogger <ConsumerWorker> logger, IHubContext <NotifyHub> hubContext)
 {
     this.channelPool = new DefaultObjectPool <IModel>(channelPolicy, Environment.ProcessorCount * 2);
     this.bus         = bus;
     this.logger      = logger;
     this.hubContext  = hubContext;
 }
        public ListenToServiceWorker(ILogger <ListenToServiceWorker> logger
                                     , IRedisSaveDataStrategy redis
                                     , ISqlServerSaveDataStrategy sqlServer,
                                     IOptions <SiteSettings> siteSettings, IServiceScopeFactory serviceScopeFactory
                                     , IPooledObjectPolicy <IModel> objectPolicy
                                     ) : base(serviceScopeFactory)
        {
            Databases = new List <ISaveDataStrategy>();
            Databases.AddRange(new ISaveDataStrategy[] { sqlServer, redis });


            _siteSettings = siteSettings.Value;
            _logger       = logger;
            _queueName    = _siteSettings.RabbitMQSettings.QueueName;

            _objectPool = new DefaultObjectPool <IModel>(objectPolicy, Environment.ProcessorCount * 2);

            channel = _objectPool.Get();

            Log.Write(_logger, "Listen To RabbitMQ");

            channel.QueueDeclare(queue: _queueName,
                                 durable: false,
                                 exclusive: false,
                                 autoDelete: false,
                                 arguments: null);

            consumer = new AsyncEventingBasicConsumer(channel);
        }
        public ConsumeRabbitMQHostedService(IPooledObjectPolicy <IModel> objectPolicy, IConfiguration Configuration)
        {
            this.Configuration = Configuration;
            string exchangeName = "exchange";

            _objectPool   = new DefaultObjectPool <IModel>(objectPolicy, Environment.ProcessorCount * 1);
            RabbitManager = new RabbitManager(objectPolicy);
            _channel      = _objectPool.Get();
            _channel.ExchangeDeclare(exchangeName, ExchangeType.Topic, true, false);
            _channel.QueueDeclare(StaticParams.ModuleName, true, false, false, null);

            List <Type> handlerTypes = typeof(ConsumeRabbitMQHostedService).Assembly.GetTypes()
                                       .Where(x => typeof(Handler).IsAssignableFrom(x) && x.IsClass && !x.IsAbstract)
                                       .ToList();

            foreach (Type type in handlerTypes)
            {
                Handler handler = (Handler)Activator.CreateInstance(type);
                Handlers.Add(handler);
            }

            foreach (IHandler handler in Handlers)
            {
                handler.QueueBind(_channel, StaticParams.ModuleName, exchangeName);
            }
            _channel.BasicQos(0, 1, false);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:EasyCaching.Bus.RabbitMQ.DefaultRabbitMQBus"/> class.
        /// </summary>
        /// <param name="_objectPolicy">Object policy.</param>
        /// <param name="rabbitMQOptions">RabbitMQ Options.</param>
        /// <param name="serializer">Serializer.</param>
        public DefaultRabbitMQBus(
            IPooledObjectPolicy <IConnection> _objectPolicy
            , IOptions <RabbitMQBusOptions> rabbitMQOptions
            , IEasyCachingSerializer serializer)
        {
            this._options    = rabbitMQOptions.Value;
            this._serializer = serializer;

            var factory = new ConnectionFactory
            {
                HostName    = _options.HostName,
                UserName    = _options.UserName,
                Port        = _options.Port,
                Password    = _options.Password,
                VirtualHost = _options.VirtualHost,
                RequestedConnectionTimeout = _options.RequestedConnectionTimeout,
                SocketReadTimeout          = _options.SocketReadTimeout,
                SocketWriteTimeout         = _options.SocketWriteTimeout
            };

            _subConnection = factory.CreateConnection();

            _pubConnectionPool = new DefaultObjectPool <IConnection>(_objectPolicy);

            _busId = Guid.NewGuid().ToString("N");
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:EasyCaching.Bus.RabbitMQ.DefaultRabbitMQBus"/> class.
        /// </summary>
        /// <param name="name">Unique name of the bus.</param>
        /// <param name="objectPolicy">Object policy.</param>
        /// <param name="rabbitMQOptions">RabbitMQ Options.</param>
        /// <param name="serializer">Serializer.</param>
        public DefaultRabbitMQBus(
            string name
            , IPooledObjectPolicy <IModel> objectPolicy
            , IOptions <RabbitMQBusOptions> rabbitMQOptions
            , IEasyCachingSerializer serializer)
        {
            BusName = name ?? throw new ArgumentNullException(nameof(name));;

            this._options    = rabbitMQOptions.Value;
            this._serializer = serializer;

            var factory = new ConnectionFactory
            {
                HostName    = _options.HostName,
                UserName    = _options.UserName,
                Port        = _options.Port,
                Password    = _options.Password,
                VirtualHost = _options.VirtualHost,
                RequestedConnectionTimeout = System.TimeSpan.FromMilliseconds(_options.RequestedConnectionTimeout),
                SocketReadTimeout          = System.TimeSpan.FromMilliseconds(_options.SocketReadTimeout),
                SocketWriteTimeout         = System.TimeSpan.FromMilliseconds(_options.SocketWriteTimeout)
            };

            _subConnection = factory.CreateConnection();

            _pubChannelPool = new DefaultObjectPool <IModel>(objectPolicy);

            _busId = Guid.NewGuid().ToString("N");
        }
Example #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:EasyCaching.Bus.RabbitMQ.DefaultRabbitMQBus"/> class.
        /// </summary>
        /// <param name="_objectPolicy">Object policy.</param>
        /// <param name="rabbitMQOptions">RabbitMQ Options.</param>
        /// <param name="serializer">Serializer.</param>
        public DefaultRabbitMQBus(
            IPooledObjectPolicy <IModel> _objectPolicy
            , IOptions <RabbitMQBusOptions> rabbitMQOptions
            , IEasyCachingSerializer serializer)
        {
            this._options    = rabbitMQOptions.Value;
            this._serializer = serializer;

            var factory = new ConnectionFactory
            {
                HostName    = _options.HostName,
                UserName    = _options.UserName,
                Port        = _options.Port,
                Password    = _options.Password,
                VirtualHost = _options.VirtualHost,
                RequestedConnectionTimeout = System.TimeSpan.FromMilliseconds(_options.RequestedConnectionTimeout),
                SocketReadTimeout          = System.TimeSpan.FromMilliseconds(_options.SocketReadTimeout),
                SocketWriteTimeout         = System.TimeSpan.FromMilliseconds(_options.SocketWriteTimeout),
                ClientProvidedName         = _options.ClientProvidedName
            };

            _subConnection = factory.CreateConnection();

            _pubChannelPool = new DefaultObjectPool <IModel>(_objectPolicy);

            _busId = Guid.NewGuid().ToString("N");

            BusName = "easycachingbus";
        }
Example #7
0
 public ConnectionPool(IPooledObjectPolicy <Connector> policy, int maximumRetained)
 {
     _policy          = policy ?? throw new ArgumentNullException(nameof(policy));
     _items           = new ObjectWrapper[maximumRetained - 1];
     _maximumRetained = maximumRetained;
     _timer           = new Timer(TimerCallback, null, 0, 10 * 60 * 1000);
 }
 public MessagingQueueListener(IPooledObjectPolicy <IModel> objectPolicy,
                               DataFlowMessageHandler dataFlowMessageHandler)
 {
     this.dataFlowMessageHandler = dataFlowMessageHandler;
     objectPool = new DefaultObjectPool <IModel>(objectPolicy, Environment.ProcessorCount * 2);
     SetupMessagingQueue();
 }
Example #9
0
 public RabbitManager(
     IPooledObjectPolicy <IModel> policyObject,
     IOptions <BrokerConfigInfo> brokerConfigOption)
 {
     _objectPool = new DefaultObjectPool <IModel>(
         policyObject, Environment.ProcessorCount * 2);
 }
Example #10
0
 public IndexConsumer(IPooledObjectPolicy <IPersistenceProvider> persistencePoolPolicy, IQueueProvider queueProvider, ILoggerFactory loggerFactory, ISearchIndex searchIndex, WorkflowOptions options)
     : base(queueProvider, loggerFactory, options)
 {
     _persistenceStorePool = new DefaultObjectPool <IPersistenceProvider>(persistencePoolPolicy);
     _searchIndex          = searchIndex;
     _logger = loggerFactory.CreateLogger(GetType());
 }
Example #11
0
        public MicrosoftAccessObjectPool(IPooledObjectPolicy <Application> policy, int maxInstancesInPool)
        {
            _policy             = policy;
            _maxInstancesInPool = maxInstancesInPool;

            FillQueue();
        }
 public WorkflowConsumer(IPooledObjectPolicy <IPersistenceProvider> persistencePoolPolicy, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IDistributedLockProvider lockProvider, IPooledObjectPolicy <IWorkflowExecutor> executorPoolPolicy, WorkflowOptions options)
     : base(queueProvider, loggerFactory, options)
 {
     _persistenceStorePool = new DefaultObjectPool <IPersistenceProvider>(persistencePoolPolicy);
     _executorPool         = new DefaultObjectPool <IWorkflowExecutor>(executorPoolPolicy);
     _lockProvider         = lockProvider;
 }
 public SmsNotificationProducer(
     IPooledObjectPolicy <IModel> pooledChannelPolicy,
     RabbitMqPubSubSettings settings,
     ILogger <SmsNotificationProducer> logger)
     : base(
         pooledChannelPolicy,
         settings,
         logger,
Example #14
0
 public RabbitBackgroundWorkerService(IPooledObjectPolicy<IModel> objectPolicy,
                               IOptions<RabbitQueueOptions> rabbitQueueOptions,
                               ILoggerManager logger)  
 {  
     _objectPool = new DefaultObjectPool<IModel>(objectPolicy, Environment.ProcessorCount * 2);  
     _rabbitQueueOptions = rabbitQueueOptions.Value;
     _logger = logger;
 } 
 public RabbitMqManager(IPooledObjectPolicy <IModel> objectPolicy,
                        ILoggerManager logger,
                        IOptions <RabbitMqExchangeOptions> rabbitExchangeOptions)
 {
     _logger                = logger;
     _objectPool            = new DefaultObjectPool <IModel>(objectPolicy, Environment.ProcessorCount * 2);
     _rabbitExchangeOptions = rabbitExchangeOptions.Value;
 }
        public override ObjectPool <T> Create <T>(IPooledObjectPolicy <T> policy)
        {
            if (policy == null)
            {
                throw new ArgumentNullException(nameof(policy));
            }

            return(new DefaultObjectPool <T>(policy, MaximumRetained));
        }
Example #17
0
 public WorkflowConsumer(IPooledObjectPolicy <IPersistenceProvider> persistencePoolPolicy, IQueueProvider queueProvider, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IWorkflowRegistry registry, IDistributedLockProvider lockProvider, IPooledObjectPolicy <IWorkflowExecutor> executorPoolPolicy, IDateTimeProvider datetimeProvider, ISearchIndex searchIndex, WorkflowOptions options)
     : base(queueProvider, loggerFactory, options)
 {
     _persistenceStorePool = new DefaultObjectPool <IPersistenceProvider>(persistencePoolPolicy);
     _executorPool         = new DefaultObjectPool <IWorkflowExecutor>(executorPoolPolicy);
     _lockProvider         = lockProvider;
     _searchIndex          = searchIndex;
     _datetimeProvider     = datetimeProvider;
 }
Example #18
0
 public RabbitMessageHandlerService(IServiceScopeFactory services,
                                    IPooledObjectPolicy <IModel> objectPolicy,
                                    IOptions <RabbitQueueOptions> rabbitQueueOptions,
                                    ILoggerManager logger)
     : base(objectPolicy, rabbitQueueOptions, logger)
 {
     _services = services;
     _logger   = logger;
 }
Example #19
0
 public SmsNotificationConsumer(
     ILogger <SmsNotificationConsumer> logger,
     IMediator mediator,
     IPooledObjectPolicy <IModel> pooledObjectPolicy,
     RabbitMqPubSubSettings rabbitMqPubSubSettings)
     : base(
         mediator,
         pooledObjectPolicy,
         rabbitMqPubSubSettings,
         logger,
Example #20
0
 public TieredObjectPool([NotNull] IPooledObjectPolicy <T> policy,
                         [NotNull] IPooledObjectDisposePolicy <T> disposePolicy,
                         int maximumRetained,
                         [NotNull] ObjectPool <T> next)
 {
     _policy        = policy ?? throw new ArgumentNullException(nameof(policy));
     _disposePolicy = disposePolicy ?? throw new ArgumentNullException(nameof(disposePolicy));
     _items         = new ObjectWrapper[maximumRetained - 1];
     _next          = next ?? throw new ArgumentNullException(nameof(next));
 }
Example #21
0
        /// <summary>
        /// Creates a new ObjectPool with an generic object policy defined by the given delegates
        /// </summary>
        public ObjectPool(Func <T> GetNewObjectFunc, Action <T> ResetObjectAction)
        {
            if (GetNewObjectFunc == null || ResetObjectAction == null)
            {
                throw new Exception("Neither GetNewObjectFunc nor ResetObjectAction can be null.");
            }

            this.pooledObjects = new List <T>();
            this.objectPolicy  = new PooledObjectPolicy <T>(GetNewObjectFunc, ResetObjectAction);
        }
Example #22
0
        /// <summary>
        /// Creates a new ObjectPool with the given object policy
        /// </summary>
        public ObjectPool(IPooledObjectPolicy <T> objectPolicy)
        {
            if (objectPolicy == null)
            {
                throw new Exception("Pooled object policy cannot be null.");
            }

            pooledObjects     = new List <T>();
            this.objectPolicy = objectPolicy;
        }
Example #23
0
        public DefaultObjectPool(IPooledObjectPolicy <T> policy, int maximumRetained)
        {
            if (policy == null)
            {
                throw new ArgumentNullException(nameof(policy));
            }

            _policy = policy;
            _items  = new T[maximumRetained];
        }
Example #24
0
        public PurchaseMedicamentsListener(IServiceProvider services,
                                           IPooledObjectPolicy <IModel> pooledObjectPolicy,
                                           ILogger <RabbitBaseListener <BasketItemModel> > logger) : base(pooledObjectPolicy)
        {
            this.logger   = logger;
            this.services = services;

            ExchangeName = "base.exchange.topic";
            QueueName    = "purchase-medicaments";
            RouteKey     = "purchase.medicaments.#";
        }
        public UserCredentialsChangeListener(IServiceProvider services,
                                             IPooledObjectPolicy <IModel> pooledObjectPolicy,
                                             ILogger <RabbitBaseListener <UserModel> > logger) : base(pooledObjectPolicy)
        {
            this.logger   = logger;
            this.services = services;

            ExchangeName = "base.exchange.topic";
            QueueName    = "purchase-food";
            RouteKey     = "user.#";
        }
Example #26
0
        public ObjectPool(IPooledObjectPolicy <T> policy, int maximumRetained = 0)
        {
            if (maximumRetained <= 0)
            {
                maximumRetained = Environment.ProcessorCount * 2;
            }

            _items      = new ObjectWrapper[maximumRetained - 1];
            _policy     = policy ?? throw new ArgumentNullException(nameof(policy));
            _fastPolicy = policy as PooledObjectPolicy <T>;
        }
Example #27
0
        public BasketAddItemListener(IServiceProvider services,
                                     IPooledObjectPolicy <IModel> pooledObjectPolicy,
                                     ILogger <RabbitBaseListener <BasketItemModel> > logger) : base(pooledObjectPolicy)
        {
            this.logger   = logger;
            this.services = services;

            ExchangeName = "base.exchange.topic";
            QueueName    = "notifications";
            RouteKey     = "notifications.basket.add.#";
        }
Example #28
0
        /// <inheritdoc/>
        public override ObjectPool <T> Create <T>(IPooledObjectPolicy <T> policy)
        {
            if (policy == null)
            {
                throw new ArgumentNullException(nameof(policy));
            }

            if (typeof(IDisposable).IsAssignableFrom(typeof(T)))
            {
                return(new DisposableObjectPool <T>(policy, MaximumRetained));
            }

            return(new DefaultObjectPool <T>(policy, MaximumRetained));
        }
        public RabbitWorker(ILoggerFactory loggerFactory, IOptions <RabbitOptions> options, IServiceScopeFactory scopeFactory)
        {
            _logger       = loggerFactory.CreateLogger <RabbitWorker>();
            _options      = options.Value;
            _scopeFactory = scopeFactory;

            using (var serviceScope = scopeFactory.CreateScope())
            {
                _provider = serviceScope.ServiceProvider.GetRequiredService <IPooledObjectPolicy <IModel> >();
                _channel  = _provider.Create();
            }

            Console.Write("=== Rabbit Connection Setup Successfull ===");
        }
        public DefaultObjectPool(IPooledObjectPolicy <T> policy, int maximumRetained)
        {
            _policy          = policy ?? throw new ArgumentNullException(nameof(policy));
            _fastPolicy      = policy as PooledObjectPolicy <T>;
            _isDefaultPolicy = IsDefaultPolicy();

            // -1 due to _firstItem
            _items = new ObjectWrapper[maximumRetained - 1];

            bool IsDefaultPolicy()
            {
                var type = policy.GetType();

                return(type.IsGenericType && type.GetGenericTypeDefinition() == typeof(DefaultPooledObjectPolicy <>));
            }
        }