Exemple #1
0
        private RabbitMqSubscriber <TMessage> BuildSubscriber(RabbitMqSubscriptionSettings subscriptionSettings,
                                                              Func <TMessage, Task> basicHandler, Func <TMessage, Task> throttlingHandler)
        {
            var result = new RabbitMqSubscriber <TMessage>(
                LoggerFactory.CreateLogger <RabbitMqSubscriber <TMessage> >(),
                subscriptionSettings)
                         .SetMessageDeserializer(MessageDeserializer)
                         .SetMessageReadStrategy(new MessageReadWithTemporaryQueueStrategy(RoutingKey ?? ""))
                         .SetReadHeadersAction(_correlationManager.FetchCorrelationIfExists)
                         .Subscribe(msg => Settings.ThrottlingRateThreshold.HasValue
                ? throttlingHandler(msg)
                : basicHandler(msg));

            foreach (var middleware in GetMiddlewares <TMessage>(subscriptionSettings))
            {
                result = result.UseMiddleware(middleware);
            }

            return(result);
        }