Duncan Edwards Jones Ответов: 1

Приостановите одну длительную оркестровку функций, чтобы дождаться другой


У меня работает одна оркестровка (DurableOrchestrationContext) и я хочу, чтобы он поставил в очередь какую-то работу для другой оркестровки, а затем заснул, пока это не будет сделано.
Я могу заставить первого заснуть с контекстом.WaitForExternalEvent() но кажется, что вызов для пробуждения оркестровки может быть вызван только из DurableOrchestrationClient, а не из OrchestrationContext.

Я вообще делаю что-то не так или...?

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

Что я уже пробовал:

В вызывающей оркестровке я жду вызываемого с помощью :
Task<int> projectionsCompleted = context.WaitForExternalEvent <int>("ProjectionsRun");

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

Процессор выполняет все проекции, но как он отвечает вызывающему абоненту, что все сделано?

(Я не хочу использовать это слово. ожидать потому что звонящий должен спать столько, сколько потребуется, а не тайм-аут)

Ближайший пример, который я нашел, это эта тема...

1 Ответов

Рейтинг:
1

Duncan Edwards Jones

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

Суб-оркестровки для долговременных функций - Azure | Microsoft Docs[^]