public Task StartAsync(CancellationToken cancellationToken)
        {
            ThrowIfDisposed();

            if (_started)
            {
                throw new InvalidOperationException("The listener has already been started.");
            }

            if (_isSessionsEnabled)
            {
                _clientEntity = _messagingProvider.CreateClientEntity(_entityPath, _serviceBusAccount.ConnectionString);

                if (_clientEntity is QueueClient queueClient)
                {
                    queueClient.RegisterSessionHandler(ProcessSessionMessageAsync, _serviceBusOptions.SessionHandlerOptions);
                }
                else
                {
                    SubscriptionClient subscriptionClient = _clientEntity as SubscriptionClient;
                    subscriptionClient.RegisterSessionHandler(ProcessSessionMessageAsync, _serviceBusOptions.SessionHandlerOptions);
                }
            }
            else
            {
                _receiver = _messagingProvider.CreateMessageReceiver(_entityPath, _serviceBusAccount.ConnectionString);
                _receiver.RegisterMessageHandler(ProcessMessageAsync, _serviceBusOptions.MessageHandlerOptions);
            }
            _started = true;

            return(Task.CompletedTask);
        }
        public void CreateClientEntity_ReturnsExpectedReceiver()
        {
            string defaultConnection = "Endpoint=sb://default.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123=";
            var    config            = new ServiceBusOptions
            {
                ConnectionString = defaultConnection
            };
            var provider     = new MessagingProvider(new OptionsWrapper <ServiceBusOptions>(config));
            var clientEntity = provider.CreateClientEntity("entityPath", defaultConnection);

            Assert.Equal("entityPath", clientEntity.Path);

            var receiver2 = provider.CreateClientEntity("entityPath", defaultConnection);

            Assert.Same(clientEntity, receiver2);

            config.PrefetchCount = 100;
            clientEntity         = provider.CreateClientEntity("entityPath1", defaultConnection);
            Assert.Equal(100, ((QueueClient)clientEntity).PrefetchCount);
        }