/// <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));
        }
Esempio n. 2
0
        /// <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));
        }