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