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); }
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(); }
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(); }