Как получить коррелированное сообщение из MsgBox в BizTalk

#biztalk #correlation

#biztalk #корреляция

Вопрос:

У меня есть следующая часть оркестровки:

введите описание изображения здесь

Я отправляю сообщение веб-службе, оно отвечает мне каким-то фиктивным сообщением. Затем он отправляет мне еще одно полезное сообщение (форма получения в Get actual answer от группы обслуживания имеет следующие наборы корреляций, которые инициализируются в форме отправки), и я должен ответить обратно.

Все работает нормально, если я использую привязку «Указать позже» для ServiceAnswerPort . Но когда я решаю использовать msgbox-direct-binding, я получаю исключение, в котором говорится, что теперь у меня несколько подписчиков, и поэтому я не могу отправить сообщение через форму отправки. Каковы способы заставить его работать?

Комментарии:

1. Какой у вас набор корреляций? Возникает ли ошибка, когда работает одна оркестровка или несколько из них? И вы имеете в виду первый запрос отправки формы отправки или следующий, отправляющий ответ?

2. Набор корреляций создается из элемента схемы сообщений, RequestId который является идентификатором Guid. Ошибка возникает, даже если работает только одна оркестровка. Первая форма отправки вызывает ошибку.

Ответ №1:

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