Ejemplo n.º 1
0
        private void AddTask(ITransactionalMessage message)
        {
            try
            {
                if (_syncMode)
                {
                    Handler(message);
                }
                else
                {
                    var task = _taskFactory.Create();
                    task.Start(Handler, message, _cancellationTokenSource.Token);

                    _workTasks.Add(task);

                    if (!_multiThreadedHandler)
                    {
                        task.Wait();
                    }
                }
            }
            catch (Exception exception)
            {
                _logger.Warning(exception, "Error starting handler task {QueueName} {@Message}", _queueName, message?.Message);

                ErrorHandler(message, new TaskCreationException(exception));
            }
        }
Ejemplo n.º 2
0
        private void Handler(ITransactionalMessage message)
        {
            _logger.Debug("Handler called {QueueName} {@Message}", _queueName, message?.Message);

            try
            {
                _messageHandler(message.Message, _cancellationTokenSource.Token);

                message.Ack();
            }
            catch (Exception exception)
            {
                ErrorHandler(message, exception);
            }
        }
Ejemplo n.º 3
0
        private void ErrorHandler(ITransactionalMessage message, Exception exception)
        {
            _logger.Debug(exception, "Error Handler called {QueueName} {@Message}", _queueName, message?.Message);

            try
            {
                if (CallErrorHandler(message.Message, exception))
                {
                    message.Ack();
                }
                else
                {
                    message.NAck();
                }
            }
            catch (Exception ex)
            {
                _logger.Information(ex, "Exception in Error Handler {QueueName} {@Message} {@Exception}", _queueName, message, exception);

                message?.NAck();
            }
        }