public async Task StartAsync(TimeSpan updateInvervall) { long?pos = await gtw.GetAsync(subscriber.StreamName); IObservable <OccuredEvent> feed = subscriber.Start(pos); feed .Do(x => handler.HandleAsync(x.Event).Wait()) .Buffer(updateInvervall) .Subscribe(i => UpdatePosition(i).Wait()); }
public async Task StartAsync(TimeSpan updateInvervall) { long?pos = await gtw.GetAsync(subscriber.StreamName); IAsyncEnumerable <OccuredEvent> eventStream = subscriber.Start(pos); Subject <OccuredEvent> feed = new Subject <OccuredEvent>(); feed .Do(x => handler.HandleAsync(x.Event).Wait()) .Buffer(updateInvervall) .Subscribe(i => UpdatePosition(i).Wait()); await foreach (var @event in eventStream) { feed.OnNext(@event); } feed.OnCompleted(); }