Почему моя BizTalk Orchestration несколько раз получает одно и то же сообщение из окна сообщений - PullRequest
5 голосов
/ 08 апреля 2011

У меня есть оркестровка с прямым логическим портом. Давайте назовем это "O1" O1 подписывается на тип сообщения «A» (указанный в свойстве фильтра порта приема)

Когда O1 получает сообщение типа «A», он ожидает некоторого пользовательского ввода, прежде чем завершить. (Некоторая корреляция в игре здесь)

Пока все хорошо ...

У меня есть вторая оркестровка, "O2", которая создает и отправляет сообщение типа "A" в окно сообщения.

Когда это происходит, я получаю много экземпляров O1 при запуске. Все, о чем я могу думать, это то, что пока существует экземпляр O1, сообщение все еще доступно в окне сообщений для использования подписчиками. Итак, я буду получать экземпляры оркестровки, создаваемой постоянно.

Когда сообщение обрабатывается оркестровкой, оно остается в окне сообщений до его завершения?

Был бы очень признателен, если бы кто-то мог объяснить, что происходит и чего мне не хватает!

1 Ответ

6 голосов
/ 09 апреля 2011

Когда сообщение обрабатывается оркестровкой, оно остается в окне сообщения до его завершения?

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

Посмотрите на это Советы и хитрости article:

Теперь самое интересное.Распространенная ловушка с портами Direct-Bound, в частности разновидностью Message Box, создает бесконечный цикл.Представьте себе простую оркестровку, состоящую из двух фигур: фигуры Activate = True Receive (конечно, Direct-Bound) и фигуры Send, которая просто перенаправляет сообщение в порт FILE.Когда эта оркестровка отправляет сообщение, куда оно идет?Как всегда, сначала в окно сообщения.Всякий раз, когда сообщение поступает в окно сообщения, BizTalk выполняет поиск любых соответствующих подписок.И чем это сообщение будет отличаться от сообщения, которое активировало оркестровку?Это не так, поэтому BizTalk с удовольствием запустит другой экземпляр вашей оркестровки для его обработки и т. Д., Пока у вас не закончится память.

...