protected virtual void Dispose(bool disposing)
        {
            if (Disposed)
            {
                return;
            }

            if (disposing)
            {
                StoppingCts.Cancel();
                Queue?.Dispose();
            }

            Disposed = true;
        }
 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;
     }
 }