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; } }
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; } }