예제 #1
0
 public RequestMessageDispatcher(
     IBrokeredMessageFactory brokeredMessageFactory,
     IClock clock,
     IDependencyResolver dependencyResolver,
     IInboundInterceptorFactory inboundInterceptorFactory,
     IOutboundInterceptorFactory outboundInterceptorFactory,
     ILogger logger,
     INimbusMessagingFactory messagingFactory,
     IReadOnlyDictionary <Type, Type[]> handlerMap,
     DefaultMessageLockDurationSetting defaultMessageLockDuration,
     INimbusTaskFactory taskFactory,
     IPropertyInjector propertyInjector)
 {
     _brokeredMessageFactory = brokeredMessageFactory;
     _clock = clock;
     _dependencyResolver         = dependencyResolver;
     _inboundInterceptorFactory  = inboundInterceptorFactory;
     _outboundInterceptorFactory = outboundInterceptorFactory;
     _logger                     = logger;
     _messagingFactory           = messagingFactory;
     _handlerMap                 = handlerMap;
     _defaultMessageLockDuration = defaultMessageLockDuration;
     _taskFactory                = taskFactory;
     _propertyInjector           = propertyInjector;
 }
예제 #2
0
        public AzureQueueManager(Func <NamespaceManager> namespaceManager,
                                 Func <MessagingFactory> messagingFactory,
                                 MaxDeliveryAttemptSetting maxDeliveryAttempts,
                                 ILogger logger,
                                 IRouter router,
                                 DefaultMessageLockDurationSetting defaultMessageLockDuration,
                                 ITypeProvider typeProvider,
                                 DefaultMessageTimeToLiveSetting defaultMessageTimeToLive,
                                 AutoDeleteOnIdleSetting autoDeleteOnIdle,
                                 EnableDeadLetteringOnMessageExpirationSetting enableDeadLetteringOnMessageExpiration)
        {
            _namespaceManager    = namespaceManager;
            _messagingFactory    = messagingFactory;
            _maxDeliveryAttempts = maxDeliveryAttempts;
            _logger = logger;
            _router = router;
            _defaultMessageLockDuration = defaultMessageLockDuration;
            _typeProvider             = typeProvider;
            _defaultMessageTimeToLive = defaultMessageTimeToLive;
            _autoDeleteOnIdle         = autoDeleteOnIdle;
            _enableDeadLetteringOnMessageExpiration = enableDeadLetteringOnMessageExpiration;

            _knownTopics        = new ThreadSafeLazy <ConcurrentBag <string> >(FetchExistingTopics);
            _knownSubscriptions = new ThreadSafeLazy <ConcurrentBag <string> >(FetchExistingSubscriptions);
            _knownQueues        = new ThreadSafeLazy <ConcurrentBag <string> >(FetchExistingQueues);
        }
 public CompetingEventMessageDispatcher(IBrokeredMessageFactory brokeredMessageFactory,
                                        IClock clock,
                                        IDependencyResolver dependencyResolver,
                                        IInboundInterceptorFactory inboundInterceptorFactory,
                                        IReadOnlyDictionary <Type, Type[]> handlerMap,
                                        DefaultMessageLockDurationSetting defaultMessageLockDuration,
                                        INimbusTaskFactory taskFactory,
                                        IPropertyInjector propertyInjector,
                                        ILogger logger)
     : base(brokeredMessageFactory, clock, dependencyResolver, handlerMap, inboundInterceptorFactory, logger, defaultMessageLockDuration, taskFactory)
 {
     _propertyInjector = propertyInjector;
 }
예제 #4
0
 protected EventMessageDispatcher(IBrokeredMessageFactory brokeredMessageFactory,
                                  IClock clock,
                                  IDependencyResolver dependencyResolver,
                                  IReadOnlyDictionary <Type, Type[]> handlerMap,
                                  IInboundInterceptorFactory inboundInterceptorFactory,
                                  ILogger logger,
                                  DefaultMessageLockDurationSetting defaultMessageLockDuration,
                                  INimbusTaskFactory taskFactory)
 {
     _brokeredMessageFactory = brokeredMessageFactory;
     _clock = clock;
     _dependencyResolver        = dependencyResolver;
     _handlerMap                = handlerMap;
     _inboundInterceptorFactory = inboundInterceptorFactory;
     _logger = logger;
     _defaultMessageLockDuration = defaultMessageLockDuration;
     _taskFactory = taskFactory;
 }
예제 #5
0
 public MessageDispatcherFactory(DefaultMessageLockDurationSetting defaultMessageLockDuration,
                                 IBrokeredMessageFactory brokeredMessageFactory,
                                 IClock clock,
                                 IDependencyResolver dependencyResolver,
                                 IInboundInterceptorFactory inboundInterceptorFactory,
                                 IZombusLogger logger,
                                 IMessagingFactory messagingFactory,
                                 IOutboundInterceptorFactory outboundInterceptorFactory,
                                 IPropertyInjector propertyInjector)
 {
     _brokeredMessageFactory = brokeredMessageFactory;
     _clock = clock;
     _dependencyResolver = dependencyResolver;
     _inboundInterceptorFactory = inboundInterceptorFactory;
     _logger = logger;
     _messagingFactory = messagingFactory;
     _outboundInterceptorFactory = outboundInterceptorFactory;
     _defaultMessageLockDuration = defaultMessageLockDuration;
     _propertyInjector = propertyInjector;
 }
예제 #6
0
 public MessageDispatcherFactory(DefaultMessageLockDurationSetting defaultMessageLockDuration,
                                 IBrokeredMessageFactory brokeredMessageFactory,
                                 IClock clock,
                                 IDependencyResolver dependencyResolver,
                                 IInboundInterceptorFactory inboundInterceptorFactory,
                                 ILogger logger,
                                 INimbusMessagingFactory messagingFactory,
                                 INimbusTaskFactory taskFactory,
                                 IOutboundInterceptorFactory outboundInterceptorFactory,
                                 IPropertyInjector propertyInjector)
 {
     _brokeredMessageFactory = brokeredMessageFactory;
     _clock = clock;
     _dependencyResolver        = dependencyResolver;
     _inboundInterceptorFactory = inboundInterceptorFactory;
     _logger                     = logger;
     _messagingFactory           = messagingFactory;
     _outboundInterceptorFactory = outboundInterceptorFactory;
     _defaultMessageLockDuration = defaultMessageLockDuration;
     _taskFactory                = taskFactory;
     _propertyInjector           = propertyInjector;
 }
        protected override async Task <LongRunningTaskWrapper> Given()
        {
            _slowCommand                = new SlowCommand();
            _handler                    = new SlowCommandHandler();
            _brokeredMessage            = new BrokeredMessage(_slowCommand);
            _clock                      = new SystemClock();
            _logger                     = new ConsoleLogger();
            _defaultMessageLockDuration = new DefaultMessageLockDurationSetting();
            _taskFactory                = new NimbusTaskFactory(new MaximumThreadPoolThreadsSetting(), new MinimumThreadPoolThreadsSetting(), _logger);

            _renewLockCalled = false;
            _handlerTask     = _handler.Handle(_slowCommand);

            LongRunningTaskWrapperBase.RenewLockStrategy = async m =>
            {
                _renewLockCalled = true;
                _lockedUntil     = _clock.UtcNow.AddSeconds(1);
                _handler.PretendToBeWorkingSemaphore.Release();
            };
            LongRunningTaskWrapperBase.LockedUntilUtcStrategy = m => _lockedUntil;

            _lockedUntil = DateTimeOffset.UtcNow.AddSeconds(1);
            return(new LongRunningTaskWrapper(_handlerTask, _handler, _brokeredMessage, _clock, _logger, _defaultMessageLockDuration, _taskFactory));
        }