Предотвращение обезвоженных экземпляров при использовании параллельной корреляции конвоя и отсутствие сообщений
У меня есть оркестровка, которая активируется 1 из 2 типов сообщений, поступающих в параллельной форме. Сообщения коррелируются по ID и статусу, а затем выполняется остальная часть оркестровки (и сообщения объединяются в 1).
Я хотел бы придумать способ предотвратить возникновение обезвоженных случаев оркестровки, когда одно из двух сообщений не приходит. Таким образом, в основном, приходит одно сообщение, а другое - нет, экземпляр оркестровки обезвоживается во время ожидания второго сообщения.
Я много раз искал и нашел несколько достойных способов сделать это, если это был серийный конвой, но это не так, и порядок сообщений не может быть гарантирован.
Например, этот пост очень полезен с точки зрения серийного сопровождения, но все еще не удовлетворяет моим требованиям.
Я пытался использовать форму прослушивания для каждого из сообщений в своей собственной ветви и задержку в третьей ветви, но узнал, что если вы активируете с помощью прослушивания, все ветви должны активироваться, и поскольку форма задержки не может активировать оркестровку, она будет не компилируется.
Любые предложения, или я должен просто сдаться и пойти на создание отдельной базы данных, чтобы вручную соотнести сообщения с использованием конвейеров?
1 ответ
Исходя из вашего описания, заголовок вашего сообщения немного неточный. Обезвоживание не проблема, пропущенное сообщение.
То, что вам нужно сделать, это обернуть Получения в Scope Shape с набором Timeout. Затем, если другое сообщение не поступит в течение тайм-аута, будет сгенерировано исключение тайм-аута, которое вы можете обработать и предпринять соответствующие действия.
В противном случае, Параллельная Форма по существу будет ждать другого сообщения.