public Task CreateResource(ResourceInfo resourceInfo)
        {
            switch (resourceInfo)
            {
            case SessionInfo sessionInfo:
                return(connection.CreateSession(sessionInfo));

            case ConsumerInfo consumerInfo:
            {
                AmqpSession session = connection.GetSession(consumerInfo.SessionId);
                return(session.CreateConsumer(consumerInfo));
            }

            case ProducerInfo producerInfo:
            {
                AmqpSession session = connection.GetSession(producerInfo.SessionId);
                return(session.CreateProducer(producerInfo));
            }

            case NmsTemporaryDestination temporaryDestination:
                return(connection.CreateTemporaryDestination(temporaryDestination));

            case TransactionInfo transactionInfo:
                var amqpSession = connection.GetSession(transactionInfo.SessionId);
                return(amqpSession.BeginTransaction(transactionInfo));

            default:
                throw new ArgumentOutOfRangeException(nameof(resourceInfo), "Not supported resource type.");
            }
        }