public override Task SaveFailHandledEventAsync(IMessageContext eventContext, string subscriptionName, Exception e, params IMessageContext[] messageContexts) { HandledEvents.Add(new FailHandledEvent(eventContext.MessageId, subscriptionName, eventContext.MessageOffset, DateTime.Now, e)); messageContexts.ForEach(messageContext => { messageContext.CorrelationId = eventContext.MessageId; Events.Add(BuildEvent(messageContext)); UnPublishedEvents.Add(new UnPublishedEvent(messageContext)); }); return(SaveChangesAsync()); }
public Task SaveCommandAsync(IMessageContext commandContext, object result = null, params IMessageContext[] messageContexts) { if (commandContext != null) { var command = BuildCommand(commandContext, result); Commands.Add(command); } messageContexts?.ForEach(eventContext => { eventContext.CorrelationId = commandContext?.MessageId; Events.Add(BuildEvent(eventContext)); UnPublishedEvents.Add(new UnPublishedEvent(eventContext)); }); return(SaveChangesAsync()); }
public Task SaveFailedCommandAsync(IMessageContext commandContext, Exception ex = null, params IMessageContext[] eventContexts) { if (commandContext != null) { var command = BuildCommand(commandContext, ex); command.Status = MessageStatus.Failed; Commands.Add(command); } eventContexts?.ForEach(eventContext => { eventContext.CorrelationId = commandContext?.MessageId; Events.Add(BuildEvent(eventContext)); UnPublishedEvents.Add(new UnPublishedEvent(eventContext)); }); return(SaveChangesAsync()); }
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()); }