/// <summary> /// An Azure Service Bus Message producer <see cref="IAmAMessageProducer"/> /// </summary> /// <param name="administrationClientWrapper">The administrative client.</param> /// <param name="serviceBusSenderProvider">The provider to use when producing messages.</param> /// <param name="makeChannel">Behaviour to use when verifying Channels <see cref="OnMissingChannel"/>.</param> /// <param name="bulkSendBatchSize">When sending more than one message using the MessageProducer, the max amount to send in a single transmission.</param> public AzureServiceBusMessageProducer(IAdministrationClientWrapper administrationClientWrapper, IServiceBusSenderProvider serviceBusSenderProvider, OnMissingChannel makeChannel = OnMissingChannel.Create, int bulkSendBatchSize = 10) { _administrationClientWrapper = administrationClientWrapper; _serviceBusSenderProvider = serviceBusSenderProvider; _makeChannel = makeChannel; _bulkSendBatchSize = bulkSendBatchSize; }
public ASBConsumerTests() { var command = new ASBTestCommand() { CommandValue = "Do the things.", CommandNumber = 26 }; _correlationId = Guid.NewGuid(); _channelName = $"Consumer-Tests-{Guid.NewGuid()}".Truncate(50); _topicName = $"Consumer-Tests-{Guid.NewGuid()}"; var routingKey = new RoutingKey(_topicName); AzureServiceBusSubscription <ASBTestCommand> subscription = new( name : new SubscriptionName(_channelName), channelName : new ChannelName(_channelName), routingKey : routingKey ); _contentType = "application/json"; _message = new Message( new MessageHeader(command.Id, _topicName, MessageType.MT_COMMAND, _correlationId, contentType: _contentType), new MessageBody(JsonSerializer.Serialize(command, JsonSerialisationOptions.Options)) ); _subscriptionConfiguration = new AzureServiceBusSubscriptionConfiguration() { DeadLetteringOnMessageExpiration = true, DefaultMessageTimeToLive = TimeSpan.FromDays(4), LockDuration = TimeSpan.FromMinutes(3), MaxDeliveryCount = 7, SqlFilter = "1=1" }; var clientProvider = ASBCreds.ASBClientProvider; _administrationClient = new AdministrationClientWrapper(clientProvider); _administrationClient.CreateSubscription(_topicName, _channelName, _subscriptionConfiguration); _serviceBusClient = clientProvider.GetServiceBusClient(); var channelFactory = new AzureServiceBusChannelFactory(new AzureServiceBusConsumerFactory(clientProvider, false)); _channel = channelFactory.CreateChannel(subscription); _producerRegistry = new AzureServiceBusProducerRegistryFactory( clientProvider, new AzureServiceBusPublication[] { new AzureServiceBusPublication { Topic = new RoutingKey(_topicName) } } ) .Create(); }
public ASBProducerTests() { _command = new ASBTestCommand() { CommandValue = "Do the things.", CommandNumber = 26 }; _correlationId = Guid.NewGuid(); var channelName = $"Producer-Send-Tests-{Guid.NewGuid()}".Truncate(50); _topicName = $"Producer-Send-Tests-{Guid.NewGuid()}"; var routingKey = new RoutingKey(_topicName); AzureServiceBusSubscription <ASBTestCommand> subscription = new( name : new SubscriptionName(channelName), channelName : new ChannelName(channelName), routingKey : routingKey ); _contentType = "application/json"; _message = new Message( new MessageHeader(_command.Id, _topicName, MessageType.MT_COMMAND, _correlationId, contentType: _contentType), new MessageBody(JsonSerializer.Serialize(_command, JsonSerialisationOptions.Options)) ); var clientProvider = ASBCreds.ASBClientProvider; _administrationClient = new AdministrationClientWrapper(clientProvider); _administrationClient.CreateSubscription(_topicName, channelName, new AzureServiceBusSubscriptionConfiguration()); var channelFactory = new AzureServiceBusChannelFactory(new AzureServiceBusConsumerFactory(clientProvider, false)); _channel = channelFactory.CreateChannel(subscription); _producerRegistry = new AzureServiceBusProducerRegistryFactory( clientProvider, new AzureServiceBusPublication[] { new AzureServiceBusPublication { Topic = new RoutingKey(_topicName) } } ) .Create(); }
/// <summary> /// Initializes an Instance of <see cref="AzureServiceBusConsumer"/> /// </summary> /// <param name="topicName">The name of the Topic.</param> /// <param name="subscriptionName">The name of the Subscription on the Topic.</param> /// <param name="messageProducerSync">An instance of the Messaging Producer used for Requeue.</param> /// <param name="administrationClientWrapper">An Instance of Administration Client Wrapper.</param> /// <param name="serviceBusReceiverProvider">An Instance of <see cref="ServiceBusReceiverProvider"/>.</param> /// <param name="batchSize">How many messages to receive at a time.</param> /// <param name="receiveMode">The mode in which to Receive.</param> /// <param name="makeChannels">The mode in which to make Channels.</param> /// <param name="subscriptionConfiguration">The configuration options for the subscriptions.</param> public AzureServiceBusConsumer(string topicName, string subscriptionName, IAmAMessageProducerSync messageProducerSync, IAdministrationClientWrapper administrationClientWrapper, IServiceBusReceiverProvider serviceBusReceiverProvider, int batchSize = 10, ServiceBusReceiveMode receiveMode = ServiceBusReceiveMode.ReceiveAndDelete, OnMissingChannel makeChannels = OnMissingChannel.Create, AzureServiceBusSubscriptionConfiguration subscriptionConfiguration = default) { _subscriptionName = subscriptionName; _topicName = topicName; _messageProducerSync = messageProducerSync; _administrationClientWrapper = administrationClientWrapper; _serviceBusReceiverProvider = serviceBusReceiverProvider; _batchSize = batchSize; _makeChannel = makeChannels; _subscriptionConfiguration = subscriptionConfiguration ?? new AzureServiceBusSubscriptionConfiguration(); _receiveMode = receiveMode; GetMessageReceiverProvider(); }