public void SaveEvent(IMessageContext eventContext, string subscriptionName, IEnumerable <IMessageContext> commandContexts, IEnumerable <IMessageContext> messageContexts) { lock (EventLock) { var @event = Events.Find(eventContext.MessageID); if (@event == null) { @event = BuildEvent(eventContext); Events.Add(@event); } HandledEvents.Add(new HandledEvent(@event.ID, subscriptionName, DateTime.Now)); commandContexts.ForEach(commandContext => { commandContext.CorrelationID = eventContext.MessageID; // don't save command here like event that would be published to other bounded context UnSentCommands.Add(new UnSentCommand(commandContext)); }); messageContexts.ForEach(messageContext => { messageContext.CorrelationID = eventContext.MessageID; Events.Add(BuildEvent(messageContext)); UnPublishedEvents.Add(new UnPublishedEvent(messageContext)); }); SaveChanges(); } }
public override Task HandleEventAsync(IMessageContext eventContext, string subscriptionName, IEnumerable <IMessageContext> commandContexts, IEnumerable <IMessageContext> messageContexts) { HandledEvents.Add(new HandledEvent(eventContext.MessageId, subscriptionName, eventContext.MessageOffset, DateTime.Now)); commandContexts.ForEach(commandContext => { commandContext.CorrelationId = eventContext.MessageId; // don't save command here like event that would be published to other bounded context UnSentCommands.Add(new UnSentCommand(commandContext)); }); messageContexts.ForEach(messageContext => { messageContext.CorrelationId = eventContext.MessageId; Events.Add(BuildEvent(messageContext)); UnPublishedEvents.Add(new UnPublishedEvent(messageContext)); }); return(SaveChangesAsync()); }