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);
        }
Пример #3
0
        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);