Biztalk Send Port Group и фильтрация - PullRequest
2 голосов
/ 04 марта 2009

Итак, модель, которая мне нужна для моего решения, выглядит следующим образом:

Мне нужно опросить базу данных и на основе результата создать запрос к базе данных для получения дополнительных данных, получить ответ и передать его группе портов, для которых на основе повышенного свойства только один из портов будет действовать.

Это выглядит так:

image

Однако, если вы назначите «Temp Out» группе портов отправки, сообщение будет отправлено на все порты в группе, независимо от фильтров, установленных на каждом порту. Насколько я понимаю, это ожидаемое поведение (читай здесь ).

Итак, я рассмотрел другие варианты, такие как использование Content Based Routing (пример CBR), как в SDK. Вы можете просмотреть это здесь .

Я попробовал это и полностью удалил оркестровку (она действительно не нужна). Тем не менее, существуют серьезные ошибки маршрутизации / подписки, и после дальнейших исследований выясняется, что вы не сможете сделать это, если у вас есть порты запроса-ответа. Некоторые статьи об этом здесь . У меня почти такая же проблема , у этого пользователя.

В конце концов, для меня не имеет значения, использую я оркестровку или нет. Однако мне нужно решение, в котором я могу передать сообщение нескольким портам отправки, и у меня может быть только один, на самом деле использовать сообщение и отправить. Это необходимо для того, чтобы я мог легко редактировать и добавлять порты без необходимости вносить какие-либо изменения или решения жесткого кода в оркестровку.

Ответы [ 2 ]

5 голосов
/ 06 марта 2009

Вы можете использовать Прямая привязка на порт отправки оркестрации, чтобы вставить сообщение обратно в окно сообщения db. Используя несколько групп портов, каждая группа портов может затем напрямую подписаться на нужный тип сообщения и выполнить фильтрацию по повышенным свойствам.

1 голос
/ 10 марта 2009

Я обнаружил, что пример модели CBR действительно работает. Проблемой с маршрутизацией были подписки. Если бы я должен был подписать порт отправки на порт запроса-ответа, я должен был установить фильтр BTS.SPName (имя порта отправки) вместо фильтра BTS.ReceivePort. При этом сообщение было правильно отфильтровано. Ваш ответ тоже бы сработал, но для этого нужно использовать оркестровку, которой я пытался избежать.

...