/// <summary> /// Factory to create an Azure Service Bus Producer /// </summary> /// <param name="clientProvider">The connection to ASB</param> /// <param name="asbPublication">Describes the parameters for the producer</param> /// <param name="bulkSendBatchSize">When sending more than one message using the MessageProducer, the max amount to send in a single transmission.</param> /// <returns></returns> public static AzureServiceBusMessageProducer Get( IServiceBusClientProvider clientProvider, AzureServiceBusPublication asbPublication, int bulkSendBatchSize = 10) { var nameSpaceManagerWrapper = new AdministrationClientWrapper(clientProvider); var topicClientProvider = new ServiceBusSenderProvider(clientProvider); return(new AzureServiceBusMessageProducer(nameSpaceManagerWrapper, topicClientProvider, asbPublication.MakeChannels, bulkSendBatchSize)); }
/// <summary> /// Creates a consumer for the specified queue. /// </summary> /// <param name="subscription">The queue to connect to</param> /// <returns>IAmAMessageConsumer</returns> public IAmAMessageConsumer Create(Subscription subscription) { var nameSpaceManagerWrapper = new AdministrationClientWrapper(_clientProvider); AzureServiceBusSubscriptionConfiguration config = new AzureServiceBusSubscriptionConfiguration(); if (subscription is AzureServiceBusSubscription sub) { config = sub.Configuration; } return(new AzureServiceBusConsumer(subscription.RoutingKey, subscription.ChannelName, new AzureServiceBusMessageProducer(nameSpaceManagerWrapper, new ServiceBusSenderProvider(_clientProvider), subscription.MakeChannels), nameSpaceManagerWrapper, new ServiceBusReceiverProvider(_clientProvider), makeChannels: subscription.MakeChannels, receiveMode: _ackOnRead ? ServiceBusReceiveMode.ReceiveAndDelete : ServiceBusReceiveMode.PeekLock, batchSize: subscription.BufferSize, subscriptionConfiguration: config)); }