Справочная информация:
Мы используем множество агрегационных, одноэлементных и многотонных оркестровок, аналогично методике Кругового Робина Серотера , описанной здесь (BizTalk 2009).
Все эти типы оркестрации имеют довольно произвольные точки выхода или продолжения (для агрегатов), обычно определяемые таймером - то есть, если Orch не получил больше сообщений в течение X минут, затем приступают к пакетированию,и если по истечении Y прошло больше минут, а сообщений больше нет, выйдите.(Мы также закрываем наши одиночные / N-тонны из-за опасений по поводу снижения производительности после того, как большое количество сообщений было подписано на синглтон за период).
Столько, сколько мы пыталисьчтобы смягчить воздействие против зомби, например, начиная любую обработку продолжения в асинхронно-рефакторированной оркестровке, всегда есть слабость, когда «хорошо» синхронизированное сообщение может вызвать зомби.(т.е. получение большего количества входящих сообщений, связанных с «уже завершенными» формами оркестровки),
Если сообщение вызывает зомби в одной из подписок, сообщение также не распространяется на ДРУГИХ подписчиков (то есть орги полностью отделены от оркестровки «вызывающих зомби»), то есть сообщение, вызывающее зомби, не обрабатывается.
Вопрос
Так что мне было бы очень интересно увидетьесли у кого-то есть другой способ, программно или иным образом, явно удалить коррелированную подписку из работающей оркестровки, как только оркестровка «продвинулась» за пределы точки, в которой она заинтересована в этом коррелированном сообщении.(тогда это новое сообщение обычно запускает новую оркестровку со своими собственными корреляциями и т. д.)
На этом этапе мы рассмотрим даже решение для взлома, такое как отраженный вызов BizTalk API или прямое удаление SQL для MsgBoxDB.