Я знаю, что это кажется очевидным для многих людей, но мой клиент использует шаблон, который мне не очень удобен.
Дело в том, что их клиент отправляет депозит или снятие средств, которые через nservicebus отправляются в стороннюю систему. Сторонняя система должна позаботиться об этой транзакции, но это может занять дни, а может быть, и недели, прежде чем транзакция будет завершена.
Сегодняшнее решение состоит в том, что создается сага, которая сначала отправляет сообщение для передачи транзакции в стороннюю систему. Когда закончите, следующим шагом саги будет проверка обновления завершения. Если транзакция не завершена, отправляется requesttimeout, «как ожидание». Когда тайм-аут достигнут, та же проверка выполняется еще раз, и отправляется новый запрос тайм-аута... и так далее. Это было вечным циклом. Что еще он делает, так это полностью заполняет ServiceInsight одним и тем же SagaTimeout снова и снова.
Я искал SLR, но, похоже, его не хватает. Мне нужно было бы только много повторных попыток для определенного сообщения, а не для всех сообщений.
Чтобы добавить, сторонняя система не может отправить событие о завершении транзакции, что означает, что нам нужно опросить обновления завершения.
Другое, что я считаю лучшим решением, было бы сохранить статус транзакции, отправить транзакцию третьей стороне и закончить эту конкретную сагу. Затем создайте сагу, которая проверяет наличие обновлений завершения с использованием временных интервалов.
Является ли это распространенным шаблоном для использования sagatimeouts таким образом? И лучше ли иметь сагу/обработчик, проверяющий только обновления завершения?