public async Task <ISubscription> Subscribe(IEventHandlerFactory factory, object[] args = null) { Subscription s = new Subscription(true); var lastPosition = (StreamPosition)await _stream.LastPosition(); string[] prefixes = _events.Select(x => x.Name).ToArray(); FilterOptions filters = new FilterOptions(EventTypeFilter.Prefix(prefixes)); // be very careful. We need to subscribe after the global position. await _eventStore.SubscribeToAllAsync(lastPosition.GlobalPosition, async (s, r, c) => { var type = _schema.EventByName(r.Event.EventType); if (type != null && _events.Contains(type)) { using (var scope = factory.Scope()) { var handler = scope.CreateHandler(type); var(m, e) = _eventConverter.Convert(type, r); await handler.Execute(m, e); } } }, true, null, filters); return(s); }
protected override async Task Given() { await Client.CreateToAllAsync( Group, EventTypeFilter.Prefix("prefix-filter-"), new PersistentSubscriptionSettings(), TestCredentials.Root); }
public async Task prefix_event_type() { const string eventTypePrefix = nameof(prefix_event_type); var streamPrefix = _fixture.GetStreamName(); var events = _fixture.CreateTestEvents(10) .Select(e => new EventData(e.EventId, $"{eventTypePrefix}-{Guid.NewGuid():n}", e.Data, e.Metadata, e.ContentType)) .ToArray(); foreach (var e in events) { await _fixture.Client.AppendToStreamAsync($"{streamPrefix}_{Guid.NewGuid():n}", AnyStreamRevision.NoStream, new[] { e }); } var result = await _fixture.Client.ReadAllAsync(Direction.Backwards, Position.End, 20, filterOptions : new FilterOptions(EventTypeFilter.Prefix(eventTypePrefix))) .ToArrayAsync(); Assert.Equal(events.Select(x => x.EventId), result.Reverse().Select(x => x.OriginalEvent.EventId)); }
public async Task SubscribeAll_EventFilterPrefix() { var prefixEventFilter = new SubscriptionFilterOptions(EventTypeFilter.Prefix("test-")); await _client.SubscribeToAllAsync(SubscribeReturn, filterOptions : prefixEventFilter); }