Можно ли повторить таймаут как сообщения? - PullRequest
0 голосов
/ 13 февраля 2019

У нас есть длительный процесс саги, который включает в себя тайм-ауты, когда время ожидания истекает, когда первое, что происходит, это вызов внешнего источника данных.

Мы задаемся вопросом, уместно ли запрашивать источникнапрямую, и тайм-аут попадет в очереди ошибок, если источник не работает (или если возникла какая-то другая проблема), или нам нужно, чтобы тайм-аут создал и отправил сообщение, которое обрабатывается, и оттуда запрашивает источник (и, таким образом, сообщение достигаеточереди ошибок при возникновении проблемы), а затем ответить обратно исходному отправителю

Мы считаем, что наш код NserviceBus немного чрезмерно сложен, и мы ищем способы его упростить, и нам интересно, хорошо ли этошанс сделать это.

public void Timeout(TimeoutEvent event) 
{
  bus.send(ExternalServiceCallCmd cmd)
}

public void handle(ExternalServiceCallCmd cmd) 
{
  manager.CallToExternalService();
}

Если вызов внешней службы завершится неудачно, ExternalServiceCallCmd будет повторен и в конечном итоге попадет в очередь ошибок.

Мы задаемся вопросом, можем ли мы упростить это следующим образом:

public void Timeout(TimeoutEvent event) 
{
  manager.CallToExternalService();
}

и, если вызов внешней службы завершится неудачно, TimeoutEvent будет повторен и при необходимости попадет в очереди ошибок

1 Ответ

0 голосов
/ 14 февраля 2019

Ну, первое правило Sagas - не делать ввод-вывод в обработчике саги, вместо этого отправлять команды рабочему обработчику ...

Кроме взаимодействия сВ своем собственном внутреннем состоянии сага не должна обращаться к базе данных, обращаться к веб-сервисам или получать доступ к другим ресурсам - ни прямо, ни косвенно, путем введения в нее таких зависимостей.

Полная информация предоставлена ​​здесь: https://docs.particular.net/nservicebus/sagas/#accessing-databases-and-other-resources-from-a-saga

Это отвечает на ваш вопрос?

Пожалуйста, не стесняйтесь обращаться в службу поддержки support@particular.net для получения более подробной информации: -)

...