public override TransportReceiveInfrastructure ConfigureReceiveInfrastructure() { var connectionObject = new ConnectionString(connectionString); var client = CreateQueueClients.CreateReceiver(connectionObject); return(new TransportReceiveInfrastructure( () => { var addressing = GetAddressing(settings, connectionString); var unwrapper = settings.HasSetting <IMessageEnvelopeUnwrapper>() ? settings.GetOrDefault <IMessageEnvelopeUnwrapper>() : new DefaultMessageEnvelopeUnwrapper(serializer); var maximumWaitTime = settings.Get <TimeSpan>(WellKnownConfigurationKeys.ReceiverMaximumWaitTimeWhenIdle); var peekInterval = settings.Get <TimeSpan>(WellKnownConfigurationKeys.ReceiverPeekInterval); var receiver = new AzureMessageQueueReceiver(unwrapper, client, addressGenerator) { MessageInvisibleTime = settings.Get <TimeSpan>(WellKnownConfigurationKeys.ReceiverMessageInvisibleTime), BatchSize = settings.Get <int>(WellKnownConfigurationKeys.ReceiverBatchSize) }; int?degreeOfReceiveParallelism = null; if (settings.TryGet <int>(WellKnownConfigurationKeys.DegreeOfReceiveParallelism, out var parallelism)) { degreeOfReceiveParallelism = parallelism; } return new MessagePump(receiver, addressing, degreeOfReceiveParallelism, maximumWaitTime, peekInterval); }, () => new AzureMessageQueueCreator(client, addressGenerator), () => Task.FromResult(StartupCheckResult.Success) )); }
public Dispatcher(QueueAddressGenerator addressGenerator, AzureStorageAddressingSettings addressing, MessageWrapperSerializer serializer, Func <UnicastTransportOperation, CancellationToken, Task <bool> > shouldSend) { createQueueClients = new CreateQueueClients(); this.addressGenerator = addressGenerator; this.addressing = addressing; this.serializer = serializer; this.shouldSend = shouldSend; }