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"); }
/// <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"; }
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(); }
public RabbitManager( IPooledObjectPolicy <IModel> policyObject, IOptions <BrokerConfigInfo> brokerConfigOption) { _objectPool = new DefaultObjectPool <IModel>( policyObject, Environment.ProcessorCount * 2); }
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()); }
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,
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)); }
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; }
public RabbitMessageHandlerService(IServiceScopeFactory services, IPooledObjectPolicy <IModel> objectPolicy, IOptions <RabbitQueueOptions> rabbitQueueOptions, ILoggerManager logger) : base(objectPolicy, rabbitQueueOptions, logger) { _services = services; _logger = logger; }
public SmsNotificationConsumer( ILogger <SmsNotificationConsumer> logger, IMediator mediator, IPooledObjectPolicy <IModel> pooledObjectPolicy, RabbitMqPubSubSettings rabbitMqPubSubSettings) : base( mediator, pooledObjectPolicy, rabbitMqPubSubSettings, logger,
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)); }
/// <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); }
/// <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; }
public DefaultObjectPool(IPooledObjectPolicy <T> policy, int maximumRetained) { if (policy == null) { throw new ArgumentNullException(nameof(policy)); } _policy = policy; _items = new T[maximumRetained]; }
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.#"; }
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>; }
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.#"; }
/// <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 <>)); } }