示例#1
0
        protected RabbitQueue(
            IConnection connection,
            string name,
            IDictionary <string, object> additionalArguments,
            int retriesCount,
            TimeSpan retryInitialTimeout,
            ITypedQueue <ExceptionDescription> errorsQueue,
            ExceptionHandlerBase <RabbitMessageDescription> exceptionHandler,
            ILogger logger)
            : base(retriesCount, retryInitialTimeout, errorsQueue, exceptionHandler, logger)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentNullException(nameof(name));
            }

            _name       = name;
            _connection = connection;

            _queue = _connection.CreateModel();
            try
            {
                _queue.QueueDeclare(queue: name, durable: true, exclusive: false, autoDelete: false, arguments: additionalArguments);
                _queue.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
            }
            catch (Exception)
            {
                _queue.Dispose();
                throw;
            }
        }
示例#2
0
 public QueuesFactoryForTests(
     IExceptionHandlersFactory <RabbitMessageDescription> exceptionHandlersFactory,
     ILoggerFactory loggerFactory,
     IOptions <TypedRabbitQueuesFactoryOptions> options,
     IConnection connection,
     ITypedQueue <ErrorInformation> errorsQueue)
     : base(exceptionHandlersFactory, loggerFactory, options)
 {
     _connection  = connection;
     _errorsQueue = errorsQueue;
 }
 private async Task EstablishConnection(CancellationToken stoppingToken)
 {
     while (Queue == null && stoppingToken.IsCancellationRequested == false)
     {
         try
         {
             Queue = await QueuesFactory.Create <TMessage>(Options.QueueCreationOptions)
                     .SubscribeAsync(MessageHandler, StoppingCts.Token);
         }
         catch (Exception e)
         {
             Logger.LogError(e, "Error has been occurred during establishing connection to queue");
             await Task.Delay(Options.ConnectionAttemptTimeout, stoppingToken);
         }
     }
 }
 public static TypedRabbitQueue <TMessage> Create <TMessage>(
     IConnection connection,
     string name,
     IDictionary <string, object> additionalArguments,
     int retriesCount,
     TimeSpan retryInitialTimeout,
     ITypedQueue <ExceptionDescription> errorsQueue,
     ExceptionHandlerBase <RabbitMessageDescription> exceptionHandler,
     ILogger <TypedRabbitQueue <TMessage> > logger)
 {
     try
     {
         return(new TypedRabbitQueue <TMessage>(connection, name, additionalArguments, retriesCount, retryInitialTimeout, errorsQueue, exceptionHandler, logger));
     }
     catch (Exception)
     {
         connection?.Dispose();
         errorsQueue?.Dispose();
         throw;
     }
 }