Предотвращение обезвоженных экземпляров при использовании параллельной корреляции конвоя и отсутствие сообщений

У меня есть оркестровка, которая активируется 1 из 2 типов сообщений, поступающих в параллельной форме. Сообщения коррелируются по ID и статусу, а затем выполняется остальная часть оркестровки (и сообщения объединяются в 1).

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

Я много раз искал и нашел несколько достойных способов сделать это, если это был серийный конвой, но это не так, и порядок сообщений не может быть гарантирован.

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

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

Любые предложения, или я должен просто сдаться и пойти на создание отдельной базы данных, чтобы вручную соотнести сообщения с использованием конвейеров?

1 ответ

Решение

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

То, что вам нужно сделать, это обернуть Получения в Scope Shape с набором Timeout. Затем, если другое сообщение не поступит в течение тайм-аута, будет сгенерировано исключение тайм-аута, которое вы можете обработать и предпринять соответствующие действия.

В противном случае, Параллельная Форма по существу будет ждать другого сообщения.

Другие вопросы по тегам