2009-03-03 2 views
2

Так модель мне нужно для моего решения заключается в следующем:Biztalk Отправить Port Group и фильтрация

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

Это выглядит следующим образом:

http://i40.tinypic.com/2zq61qh.jpg

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

Итак, я изучил другие варианты, такие как использование маршрутизации на основе контента (образец CBR), как в SDK. Вы можете посмотреть это here.

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

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

ответ

1

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

5

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

+0

В каком-то смысле я нашел решение. Я удалил оркестровку, продвигаемые свойства, а также на втором и третьем портах, поместил фильтры, где я определил BTS.SPName (которое, как я думал, было именем хранимой процедуры, но теперь понимает имя Send Port). Проблемы с маршрутизации были связаны с тем, что я не полностью подписал их. – achinda99

Смежные вопросы