Выкройка Саги с РебусомC#

Место общения программистов C#
Ответить
Anonymous
 Выкройка Саги с Ребусом

Сообщение Anonymous »

Что касается следующего кода; Я использую шаблон Saga для выполнения распределенной транзакции для каждого платежа в списке; Поскольку выполнение Rebus является асинхронным, я получаю результат напрямую, даже если все экземпляры саги еще не завершены. Мой вопрос: как я могу заставить код ждать завершения всех экземпляров саги, а затем возвращать результат?
public class CreatePrelimnaryMoneyTransfersCommandHandler : IRequestHandler
{
private readonly IBus _bus;
private readonly IPaymentRepository _paymentRepository;

public CreatePrelimnaryMoneyTransfersCommandHandler(IBus bus, IPaymentRepository paymentRepository)
{
_bus = bus;
_paymentRepository = paymentRepository;
}

public async Task Handle(CreatePrelimnaryMoneyTransfersCommand request, CancellationToken cancellationToken)
{
try
{
var payments = await _paymentRepository.GetPaymentsByQueryParameters(new PaymentQueryParameters { ShowFailedOrChargedBackWithNoPayoutId = true });

foreach (var payment in payments)
{
await _bus.Send(new ExecuteCreatePrelimnaryMoneyTransfersSaga(payment.PaymentId));
}
// this code should be waited until all payments are handled
return new Result(true, string.Empty);
}
catch (Exception ex)
{
// Handle or log the exception as needed
return new Result(false, ex.Message);
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... with-rebus
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»