Код: Выделить всё
public Guid CreateInvoice(string email, string name, ...)
{
var transaction = await _context.Databse.BeginTransactionAsync();
try {
await _context.Invoice.AddAsync(new Invoice(email, name));
// Some other CRUD operations here
await _emailService.SendEmail(email, name); // This here adds the latency
// Some other CRUD
transaction.Commit();
return newInvoice.Id;
}
catch(Exception e)
{
transaction.Rollback();
}
}
Какой здесь лучший подход? Должен ли я добавить какую-то политику повторных попыток для отправки, чтобы мне не приходилось беспокоиться об откате. Должен ли я добавить в службу электронной почты какой-то метод, который уведомляет пользователя об ошибке в случае сбоя метода? Возможно, я смогу разделить их, а затем вызвать отправку электронной почты в фоновом режиме, чтобы она работала сама по себе. Я открыт для любых идей о том, как с этим справиться. Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/782 ... -a-request