public async Task Handle_MessageWithoutRegisteredHandler_ShouldReturnFalse() { var projectionMock = new Mock <TestProjection>(null) { CallBase = true }; var unregisteredMessageEnvelope = new FakeMessageEnvelope(1, new UnregisteredMessage()); IProjection <string, FakeMessageEnvelope> projection = projectionMock.Object; Assert.That(await projection.Handle(_connectionFactory, unregisteredMessageEnvelope, CancellationToken.None), Is.False); }
private async Task OnEvent(StreamSubscription _, ResolvedEvent resolvedEvent, CancellationToken c) { if (resolvedEvent.Event.EventType.StartsWith("$")) { return; } var eventJson = Encoding.UTF8.GetString(resolvedEvent.Event.Data.ToArray()); var eventType = Type.GetType($"EventSourced.Simple.Aggregate.Events.{resolvedEvent.Event.EventType}, EventSourced.Simple"); var @event = JsonConvert.DeserializeObject(eventJson, eventType); await projection.Handle(@event); }
Action <EventStoreCatchUpSubscription, ResolvedEvent> EventAppeared(IProjection projection) { return((s, e) => { if (!projection.CanHandle(e.Event.EventType)) { return; } var deserializedEvent = e.Deserialize(); projection.Handle(e.Event.EventType, deserializedEvent); UpdatePosition(projection.GetType(), e.OriginalPosition.Value); }); }
Action <EventStoreCatchUpSubscription, ResolvedEvent> EventAppeared(IProjection projection) { return((s, e) => { if (!projection.CanHandle(e.Event.EventType)) { UpdatePosition(projection.GetType(), e.OriginalPosition.Value); return; } Console.WriteLine("Processing"); Console.WriteLine(e.Event.EventStreamId); Console.WriteLine(e.Event.EventNumber); Console.WriteLine(e.Event.EventType); var deserializedEvent = e.Deserialize(); projection.Handle(e.Event.EventType, deserializedEvent); UpdatePosition(projection.GetType(), e.OriginalPosition.Value); }); }
private Action <EventStoreCatchUpSubscription, ResolvedEvent> EventAppeared(IProjection projection) { return((subscription, resolvedEvent) => { var currentPosition = resolvedEvent.OriginalPosition; var projectionId = projection.Id; try { var @event = resolvedEvent.Event; if (!projection.CanHandle(@event.EventType)) { return; } var deserializedEvent = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(resolvedEvent.Event.Data), new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects }); projection.Handle(@event.EventType, deserializedEvent); positionStore.Update(projectionId, currentPosition); log.Debug($"EVENT HANDLED: EventType: {@event.EventType} AggregateId: {resolvedEvent.OriginalStreamId} Projection: {projectionId}"); } catch (Exception exception) { var aggregateId = resolvedEvent.OriginalStreamId; var position = currentPosition.HasValue ? currentPosition.ToString() : "unknown"; log.Error( $"EXCEPTION DURING PROJECTION UPDATE - AggregateId: {aggregateId} Projection: {projectionId} Position: {position}", exception); try { positionStore.OnError(projectionId, resolvedEvent.Event.EventType, aggregateId, currentPosition, exception); } catch (Exception ex) { log.Error($"EXCEPTION DURING ERROR POSITION UPDATE - AggregateId: {aggregateId} Projection: {projectionId} Position: {position}", ex); } } }); }
public void Handle(string eventType, object e) => _handler.Handle((T)e).Wait();