public virtual async Task Succeed(Outbox outbox) { outbox.Status = OutboxMessageStatus.Succeeded; outbox.Updated = DateTime.UtcNow; outbox.Retries++; await UpdateOutbox(outbox); }
public virtual async Task Fail(Outbox outbox, string errorMessage = null, Exception exception = null) { outbox.Status = OutboxMessageStatus.Failed; outbox.Updated = DateTime.UtcNow; outbox.Retries++; outbox.ErrorMessage = errorMessage; outbox.Error = exception?.ToString(); await UpdateOutbox(outbox); }
private Task InnerSend <T>(T message, OutboxMessageType messageType) { var outbox = new Outbox { Name = message.GetType().Name, Status = OutboxMessageStatus.New, OutboxMessageType = messageType, Content = _serializer.Serialize(message) }; return(_outboxDataProvider.Save(outbox)); }
public abstract Task <Outbox> Save(Outbox outbox);
protected abstract Task UpdateOutbox(Outbox outbox);