2016-01-26 4 views
1

В настоящее время мы осуществляем рабочий процесс в Amazon SWF, где мы отправляем задания/рабочие процессы из нашего веб-приложения. Все было довольно быстро и безболезненно, чтобы настроить его с помощью Ruby Flow framework. До тех пор, пока дебиторы/сотрудники по работе не сбой, мы, похоже, способны обработать большинство проблем/исключений изящно.Подход к разбившимся рабочим в amazon swf

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

ответ

0

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

1

Существуют различные типы сбоев «принятия решения».

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

  2. Workflow worker не работает, но выполнение рабочего процесса само сбой. В этом случае вы можете использовать ListClosedWorkflowExecutions для подсчета таких неудачных рабочих процессов.

  3. Работник рабочего процесса не сбой, но задача решения не может завершиться, так как ошибка RespondDecisionTaskCompleted из-за ошибки в структуре потока. Поскольку с точки зрения SWF-задачи задача никогда не завершается, она в какой-то момент отмечается как вычисленная и перенесенная. Поскольку ошибка все еще присутствует, новая задача снова никогда не завершается и не переносится, и так далее. В ходе выполнения рабочего процесса, испытывающего такую ​​проблему, есть история с хвостом, состоящим из повторяющихся событий «запланированная задача решения, время решения задачи». Если ваш рабочий процесс имеет известное время выполнения, лучшим способом поймать эту проблему является установление разумного executeStartToCloseTimeout и поиск устаревших исполнений рабочего процесса. Если тайм-аут задачи решения слишком мал, такие рабочие процессы также могут превзойти пределы истории до таймаута выполнения.

Смежные вопросы