protected AbstractRabbitMQConsumer(
            ConnectionFactory connectionFactory,
            RabbitMQConnection connectionConsumer,
            RabbitMQConnection connectionPublisher,
            string queueName,
            ISerializer serializer = null,
            ILogger logger         = null,
            IConsumerCountManager consumerCountManager       = null,
            IMessageRejectionHandler messageRejectionHandler = null,
            ushort prefetchCount = 1)
        {
            _connectionFactory  = connectionFactory;
            ConnectionConsumer  = connectionConsumer;
            ConnectionPublisher = connectionPublisher;

            QueueName               = queueName;
            Serializer              = serializer ?? new JsonSerializer();
            _logger                 = logger;
            ConsumerCountManager    = consumerCountManager ?? new ConsumerCountManager();
            MessageRejectionHandler =
                messageRejectionHandler ?? new MessageDeserializationRejectionHandler(connectionFactory);

            PrefetchCount = prefetchCount;

            _cancellationTokenSource = new CancellationTokenSource();
        }
 public SimpleProcessingWorker(IQueueClient queueClient, string queueName, Action <T, RabbitMQConsumerContext> callbackAction,
                               IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                               ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     _callbackAction = callbackAction;
 }
예제 #3
0
 public SimpleAsyncMessageProcessingWorker(IQueueClient queueClient, string queueName,
                                           Func <T, CancellationToken, Task> callbackFunc, TimeSpan processingTimeout,
                                           IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null)
     : base(queueClient, queueName, consumerCountManager, messageRejectionHandler)
 {
     _callbackFunc      = callbackFunc;
     _processingTimeout = processingTimeout;
 }
        protected AbstractSimpleMessageProcessingWorker(IQueueClient queueClient, string queueName,
                                                        IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null)
        {
            QueueClient = queueClient;
            QueueName   = queueName;

            ConsumerCountManager    = consumerCountManager ?? new ConsumerCountManager();
            MessageRejectionHandler = messageRejectionHandler ?? new MessageDeserializationRejectionHandler(QueueClient);
        }
 public SimpleAsyncProcessingWorker(IQueueClient queueClient, string queueName,
                                    Func <T, RabbitMQConsumerContext, CancellationToken, Task> callbackFunc, TimeSpan processingTimeout,
                                    IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                    ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     _callbackFunc      = callbackFunc;
     _processingTimeout = processingTimeout;
 }
 public SimpleProcessingWorker(IQueueClient queueClient, string queueName,
                               Action <IEnumerable <T> > batchCallbackAction,
                               ushort batchSize, IConsumerCountManager consumerCountManager = null,
                               IMessageRejectionHandler messageRejectionHandler             = null, ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     _batchCallbackAction = batchCallbackAction;
     _batchSize           = batchSize;
 }
예제 #7
0
 protected AbstractAdvancedProcessingWorker(IQueueClient queueClient, string queueName,
                                            ExceptionHandlingStrategy exceptionHandlingStrategy = ExceptionHandlingStrategy.Requeue,
                                            int invokeRetryCount = 1, int invokeRetryWaitMilliseconds = 0,
                                            IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null, ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     InvokeRetryCount            = invokeRetryCount;
     InvokeRetryWaitMilliseconds = invokeRetryWaitMilliseconds;
     ExceptionHandlingStrategy   = exceptionHandlingStrategy;
 }
예제 #8
0
 public IQueueConsumer GetConsumer(string queueName, IConsumerCountManager consumerCountManager, IMessageProcessingWorker messageProcessingWorker, Type expectedType, IMessageRejectionHandler messageRejectionHandler)
 {
     return(new RabbitMQConsumer(
                connectionPool: this.ConnectionPool,
                queueName: queueName,
                expectedType: expectedType,
                messageProcessingWorker: messageProcessingWorker,
                consumerCountManager: consumerCountManager,
                messageRejectionHandler: messageRejectionHandler));
 }
 public AdvancedProcessingWorker(IQueueClient queueClient, string queueName, Action <T, RabbitMQConsumerContext> callbackAction,
                                 ExceptionHandlingStrategy exceptionHandlingStrategy = ExceptionHandlingStrategy.Requeue,
                                 int invokeRetryCount = 1, int invokeRetryWaitMilliseconds = 0,
                                 IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                 ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, exceptionHandlingStrategy, invokeRetryCount, invokeRetryWaitMilliseconds,
            consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     _callbackAction = callbackAction;
 }
 public SimpleAsyncProcessingWorker(IQueueClient queueClient, string queueName,
                                    Func <IEnumerable <T>, CancellationToken, Task> batchCallbackFunc, ushort batchSize,
                                    TimeSpan processingTimeout,
                                    IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                    ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     _batchCallbackFunc = batchCallbackFunc;
     _processingTimeout = processingTimeout;
     _batchSize         = batchSize;
 }
 public AdvancedProcessingWorker(IQueueClient queueClient, string queueName,
                                 Action <IEnumerable <T> > batchCallbackAction,
                                 ushort batchSize, ExceptionHandlingStrategy exceptionHandlingStrategy = ExceptionHandlingStrategy.Requeue,
                                 int invokeRetryCount = 1, int invokeRetryWaitMilliseconds = 0,
                                 IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                 ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, exceptionHandlingStrategy, invokeRetryCount, invokeRetryWaitMilliseconds,
            consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     _batchCallbackAction = batchCallbackAction;
     _batchSize           = batchSize;
 }
예제 #12
0
 public AdvancedAsyncProcessingWorker(IQueueClient queueClient, string queueName,
                                      Func <T, RabbitMQConsumerContext, CancellationToken, Task> callbackFunc, TimeSpan processingTimeout,
                                      ExceptionHandlingStrategy exceptionHandlingStrategy = ExceptionHandlingStrategy.Requeue,
                                      int invokeRetryCount = 1, int invokeRetryWaitMilliseconds = 0,
                                      IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                      ILogger logger = null, ushort prefetchCount = 1)
     : base(queueClient, queueName, exceptionHandlingStrategy, invokeRetryCount, invokeRetryWaitMilliseconds,
            consumerCountManager, messageRejectionHandler, logger, prefetchCount)
 {
     _callbackFunc      = callbackFunc;
     _processingTimeout = processingTimeout;
 }
        public static async Task <SimpleProcessingWorker <T> > CreateAndStartAsync(IQueueClient queueClient,
                                                                                   string queueName,
                                                                                   Action <IEnumerable <T> > batchCallbackAction, ushort batchSize, CancellationToken cancellationToken,
                                                                                   IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                                                                   ILogger logger = null, ushort prefetchCount = 1)
        {
            var instance = new SimpleProcessingWorker <T>(queueClient, queueName, batchCallbackAction, batchSize,
                                                          consumerCountManager, messageRejectionHandler, logger, prefetchCount);

            await instance.StartAsync(cancellationToken).ConfigureAwait(false);

            return(instance);
        }
예제 #14
0
 public IQueueConsumer GetConsumer <T>(string queueName, IConsumerCountManager consumerCountManager,
                                       IMessageProcessingWorker <T> messageProcessingWorker, IMessageRejectionHandler messageRejectionHandler)
     where T : class
 {
     return(new RabbitMQConsumer <T>(
                connectionPool: _connectionPool,
                queueName: queueName,
                serializer: _serializer,
                errorLogger: _errorLogger,
                messageProcessingWorker: messageProcessingWorker,
                consumerCountManager: consumerCountManager,
                messageRejectionHandler: messageRejectionHandler));
 }
        public static async Task <AdvancedProcessingWorker <T> > CreateAndStartAsync(IQueueClient queueClient,
                                                                                     string queueName, Action <T, RabbitMQConsumerContext> callbackAction, CancellationToken cancellationToken,
                                                                                     ExceptionHandlingStrategy exceptionHandlingStrategy = ExceptionHandlingStrategy.Requeue,
                                                                                     int invokeRetryCount = 1, int invokeRetryWaitMilliseconds = 0,
                                                                                     IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                                                                     ILogger logger = null, ushort prefetchCount = 1)
        {
            var instance = new AdvancedProcessingWorker <T>(queueClient, queueName, callbackAction,
                                                            exceptionHandlingStrategy, invokeRetryCount, invokeRetryWaitMilliseconds, consumerCountManager,
                                                            messageRejectionHandler, logger, prefetchCount);

            await instance.StartAsync(cancellationToken).ConfigureAwait(false);

            return(instance);
        }
        protected AbstractSimpleProcessingWorker(IQueueClient queueClient, string queueName,
                                                 IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                                 ILogger logger = null, ushort prefetchCount = 1)
        {
            QueueClient = queueClient;
            QueueName   = queueName;

            ConsumerCountManager    = consumerCountManager ?? new ConsumerCountManager();
            MessageRejectionHandler =
                messageRejectionHandler ?? new MessageDeserializationRejectionHandler(QueueClient);

            Logger = logger;

            PrefetchCount = prefetchCount;
        }
        public RabbitMQConsumer(RabbitMQConnectionPool connectionPool, string queueName,
                                IMessageProcessingWorker <T> messageProcessingWorker, ISerializer serializer = null, IErrorLogger errorLogger = null,
                                IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler           = null)
        {
            _connectionPool          = connectionPool;
            _queueName               = queueName;
            _serializer              = serializer ?? new JsonSerializer();
            _errorLogger             = errorLogger;
            _messageProcessingWorker = messageProcessingWorker;
            _consumerCountManager    = consumerCountManager ?? new ConsumerCountManager();
            _messageRejectionHandler = messageRejectionHandler ?? new MessageDeserializationRejectionHandler(connectionPool);

            _consumerWorkersCount    = 0;
            _cancellationTokenSource = new CancellationTokenSource();
        }
    public RabbitMQConsumer(RabbitMQConnectionPool connectionPool, string queueName, Type expectedType, IMessageProcessingWorker messageProcessingWorker, IConsumerCountManager consumerCountManager, IMessageRejectionHandler messageRejectionHandler)
    {
        //Set using constructor parameters
        this.ConnectionPool          = connectionPool;
        this.QueueName               = queueName;
        this.ExpectedType            = expectedType;
        this.MessageProcessingWorker = messageProcessingWorker;
        this._consumerCountManager   = consumerCountManager;
        this.MessageRejectionHandler = messageRejectionHandler;

        //Set using default values
        this._consumerWorkersCount    = 0;
        this._cancellationTokenSource = new CancellationTokenSource();
        this._isStopped = true;
    }
예제 #19
0
 public RabbitMQConsumer(
     ILogger logger,
     IQueueClient queueClient,
     ConnectionFactory connectionFactory,
     RabbitMQConnection connectionConsumer,
     RabbitMQConnection connectionPublisher,
     string queueName,
     IMessageProcessingWorker <T> messageProcessingWorker,
     ISerializer serializer = null,
     IConsumerCountManager consumerCountManager       = null,
     IMessageRejectionHandler messageRejectionHandler = null,
     ushort prefetchCount = 1)
     : base(connectionFactory, connectionConsumer, connectionPublisher, queueName, serializer, logger, consumerCountManager, messageRejectionHandler, prefetchCount)
 {
     _queueClient             = queueClient;
     _logger                  = logger;
     _messageProcessingWorker = messageProcessingWorker;
 }
        public IQueueConsumer CreateBatchConsumer <T>(string queueName, IConsumerCountManager consumerCountManager,
                                                      IBatchProcessingWorker <T> batchProcessingWorker, IMessageRejectionHandler messageRejectionHandler)
            where T : class
        {
            RabbitMQConnection connectionConsumer = ConnectionPerQueue
                ? _rabbitMQConnectionManager.CreateConnection($"consumer: {queueName}")
                : _rabbitMQConnectionManager.ConnectionByName("consumer") ?? _rabbitMQConnectionManager.CreateConnection("consumer");

            var connectionPublisher = _rabbitMQConnectionManager.ConnectionByName("publisher");

            return(new RabbitMQBatchConsumer <T>(
                       connection: connectionConsumer,
                       connectionPublisher: connectionPublisher,
                       connectionFactory: _connectionFactory,
                       queueName: queueName,
                       serializer: _serializer,
                       logger: _logger,
                       batchProcessingWorker: batchProcessingWorker,
                       consumerCountManager: consumerCountManager,
                       messageRejectionHandler: messageRejectionHandler));
        }
        public IQueueConsumer CreateConsumer <T>(string queueName, IConsumerCountManager consumerCountManager,
                                                 IMessageProcessingWorker <T> messageProcessingWorker, IMessageRejectionHandler messageRejectionHandler,
                                                 ushort prefetchCount = 1)
            where T : class
        {
            RabbitMQConnection connectionConsumer = ConnectionPerQueue
                ? _rabbitMQConnectionManager.CreateConnection($"consumer: {queueName}")
                : _rabbitMQConnectionManager.ConnectionByName("consumer") ?? _rabbitMQConnectionManager.CreateConnection("consumer");

            var connectionPublisher = _rabbitMQConnectionManager.ConnectionByName("publisher");

            return(new RabbitMQConsumer <T>(
                       queueClient: this,
                       connectionConsumer: connectionConsumer,
                       connectionPublisher: connectionPublisher,
                       connectionFactory: _connectionFactory,
                       queueName: queueName,
                       serializer: _serializer,
                       logger: _logger,
                       messageProcessingWorker: messageProcessingWorker,
                       consumerCountManager: consumerCountManager,
                       messageRejectionHandler: messageRejectionHandler,
                       prefetchCount: prefetchCount));
        }
예제 #22
0
 public SimpleMessageProcessingWorker(IQueueClient queueClient, string queueName, Action <T> callbackAction,
                                      IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null)
     : base(queueClient, queueName, consumerCountManager, messageRejectionHandler)
 {
     CallbackAction = callbackAction;
 }
 public RabbitMQBatchConsumer(ILogger logger, ConnectionFactory connectionFactory, RabbitMQConnection connection, RabbitMQConnection connectionPublisher, string queueName, IBatchProcessingWorker <T> batchProcessingWorker, ISerializer serializer = null, IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null)
     : base(connectionFactory, connection, connectionPublisher, queueName, serializer, logger, consumerCountManager, messageRejectionHandler)
 {
     _batchProcessingWorker = batchProcessingWorker;
     _logger = logger;
 }
예제 #24
0
        public async static Task <SimpleAsyncMessageProcessingWorker <T> > CreateAndStartAsync(IQueueClient queueClient,
                                                                                               string queueName, Func <T, CancellationToken, Task> callbackFunc, TimeSpan processingTimeout,
                                                                                               CancellationToken cancellationToken, IConsumerCountManager consumerCountManager = null,
                                                                                               IMessageRejectionHandler messageRejectionHandler = null)
        {
            var instance = new SimpleAsyncMessageProcessingWorker <T>(queueClient, queueName, callbackFunc,
                                                                      processingTimeout, consumerCountManager, messageRejectionHandler);

            await instance.StartAsync(cancellationToken).ConfigureAwait(false);

            return(instance);
        }
예제 #25
0
        public static async Task <AdvancedAsyncProcessingWorker <T> > CreateAndStartAsync(IQueueClient queueClient,
                                                                                          string queueName, Func <IEnumerable <T>, CancellationToken, Task> batchCallbackFunc, ushort batchSize,
                                                                                          TimeSpan processingTimeout,
                                                                                          CancellationToken cancellationToken,
                                                                                          ExceptionHandlingStrategy exceptionHandlingStrategy = ExceptionHandlingStrategy.Requeue,
                                                                                          int invokeRetryCount = 1, int invokeRetryWaitMilliseconds = 0,
                                                                                          IConsumerCountManager consumerCountManager = null, IMessageRejectionHandler messageRejectionHandler = null,
                                                                                          ILogger logger = null, ushort prefetchCount = 1)
        {
            var instance = new AdvancedAsyncProcessingWorker <T>(queueClient, queueName, batchCallbackFunc, batchSize,
                                                                 processingTimeout,
                                                                 exceptionHandlingStrategy, invokeRetryCount, invokeRetryWaitMilliseconds,
                                                                 consumerCountManager, messageRejectionHandler, logger, prefetchCount);

            await instance.StartAsync(cancellationToken).ConfigureAwait(false);

            return(instance);
        }