示例#1
0
        public PendingRequestManager(IPendingRequestStore store, Func<DateTimeOffset> timeProvider, TimeSpan interval, Action<object> onRequestTimeout)
        {
            Store = store;

            _onRequestTimeout = onRequestTimeout;
            _timeProvider = timeProvider;
            _timerInterval = interval;
            _timer = new Timer(state => TimerCallback(), null, Timeout.Infinite, Timeout.Infinite);
        }
示例#2
0
        protected MessageBusBase(MessageBusSettings settings)
        {
            AssertSettings(settings);

            Settings = settings;
            PublisherSettingsByMessageType = settings.Publishers.ToDictionary(x => x.MessageType);

            PendingRequestStore = new InMemoryPendingRequestStore();
            PendingRequestTimer = new Timer
            {
                Interval  = 1000,
                AutoReset = true
            };
            PendingRequestTimer.Elapsed += CleanPendingRequests;
            PendingRequestTimer.Start();
        }
示例#3
0
        protected MessageBusBase(MessageBusSettings settings)
        {
            AssertSettings(settings);

            Settings = settings;
            PublisherSettingsByMessageType = settings.Publishers.ToDictionary(x => x.MessageType);

            PendingRequestStore   = new InMemoryPendingRequestStore();
            PendingRequestManager = new PendingRequestManager(PendingRequestStore, () => CurrentTime, TimeSpan.FromSeconds(1), request =>
            {
                // Execute the event hook
                // ToDo: sort out the ConsumerSettings arg for req/resp, for now pass null
                (Settings.RequestResponse.OnMessageExpired ?? Settings.OnMessageExpired)?.Invoke(null, request);
            });
            PendingRequestManager.Start();
        }