#biztalk
#biztalk
Вопрос:
У меня есть 2 оркестровки в моем проекте и 2 схемы (первая предназначена для запроса, вторая — для ответа). Orchestration 1
имеет Receive
форму (Активация = истина). Он получает запрос и затем направляет его на Orchestration 2
. Последний создает запрос к веб-службе, которая отвечает ответом, ждет 2 минуты, а затем отправляет новый запрос в мою службу BizTalk. Оба проекта используют одни и те же схемы, схемы a Request
и a Response
.
Orchestration 2
использует набор корреляций, который инициализируется в Send
форме, которая отправляет запрос веб-службе. Кроме того, Orchestration 2
имеет Receive
форму, ожидающую сообщения с корреляцией, установленной ранее в Send
форме.
Вот диаграмма последовательности:
И есть Orchestration 2
:
Send_1
и Receive_2
формы имеют настроенные свойства корреляции.
Проблема в том, что когда веб-сервис отправляет request2 (см. Диаграмму выше) в мою службу biztalk, он выдает сообщение об ошибке: «В сообщении обнаружено несколько подписок на ответы на запросы. Сообщение может быть перенаправлено только на одну подписку на запрос ответа «.Как это может быть, если я установил корреляцию? Я ожидал, что request2 будет перенаправлен на Orchestration 2
, потому что у него есть приемник с корреляцией.
Ответ №1:
Сообщение об ошибке правильное.
Когда запрос отправляется из веб-сервиса, он направляется в форму приема активации Orchestration2.
Но поскольку корреляция действует, это создает дополнительную подписку, поэтому ожидается, что запрос также будет перенаправлен на третью форму приема в Orchestration2.
Если вы не можете различить схемы запросов, вы должны использовать дополнительное условие для активации Orchestration2. Вы можете, например, фильтровать запрос, поступающий от Orchestration1, с помощью дополнительных фильтров, основанных на свойствах контекста.
Вы заметите, что один запрос поступает от адаптера WCF или SOAP, а первый — нет.
Комментарии:
1. Да, это сработало, спасибо! Я настроил выражение фильтра в форме приема оркестровки 1, и поэтому у меня все получилось.