Пример #1
0
        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)
                       ));
        }
Пример #2
0
 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;
 }