private IEventFeedsRunner RunEventFeeds(TimeSpan[] bladeDelays) { IBladesBuilder <long?> bladesBuilder = BladesBuilder.New(eventSource, eventConsumer, new SilentLog()); for (var i = 0; i < bladeDelays.Length; i++) { bladesBuilder = bladesBuilder.WithBlade($"Blade_{i}", bladeDelays[i]); } var eventFeedsRunner = eventFeedFactory.WithOffsetType <long?>() .WithEventType(bladesBuilder) .WithOffsetStorageFactory(bladeId => new InMemoryOffsetStorage <long?>()) .RunFeeds(delayBetweenIterations: TimeSpan.FromMilliseconds(20), cancellationToken: CancellationToken.None); return(eventFeedsRunner); }
public (/*[NotNull]*/ IEventFeedsRunner, /*[NotNull]*/ RtqTaskCounterStateManager) RunEventFeeding(CancellationToken cancellationToken) { var stateManager = new RtqTaskCounterStateManager(logger, serializer, taskDataRegistry, stateStorage, settings, offsetInterpreter, perfGraphiteReporter); var eventConsumer = new RtqTaskCounterEventConsumer(stateManager, handleTasksMetaStorage, perfGraphiteReporter); IBladesBuilder <string> bladesBuilder = BladesBuilder.New(eventSource, eventConsumer, logger); foreach (var bladeId in stateManager.Blades) { bladesBuilder = bladesBuilder.WithBlade(bladeId.BladeKey, bladeId.Delay); } var eventFeedsRunner = eventFeedFactory .WithOffsetType <string>() .WithEventType(bladesBuilder) .WithOffsetInterpreter(offsetInterpreter) .WithOffsetStorageFactory(bladeId => stateManager.CreateOffsetStorage(bladeId)) .WithSingleLeaderElectionKey(stateManager.CompositeFeedKey) .RunFeeds(settings.DelayBetweenEventFeedingIterations, cancellationToken); return(eventFeedsRunner, stateManager); }