Biztalk Отправить группу портов и фильтрацию
Итак, модель, которая мне нужна для моего решения, выглядит следующим образом:
Мне нужно опросить базу данных и на основе результата создать запрос к базе данных для получения дополнительных данных, получить ответ и передать его группе портов, для которых на основе повышенного свойства будет действовать только один из портов.
Это выглядит так:
http://i40.tinypic.com/2zq61qh.jpg
Однако если вы назначите "Temp Out" для группы портов отправки, сообщение будет отправлено на все порты в группе, независимо от фильтров, установленных на каждом порту. Насколько я понимаю, это ожидаемое поведение (читайте здесь).
Поэтому я изучил другие варианты, такие как использование Content Based Routing (пример CBR), как в SDK. Вы можете посмотреть это здесь.
Я попробовал это и полностью удалил оркестровку (ее действительно не нужно). Тем не менее, существуют серьезные ошибки маршрутизации / подписки, и после дальнейших исследований выясняется, что вы не можете сделать это, если у вас есть порты запроса-ответа. Некоторые статьи об этом здесь. У меня почти такая же проблема, как у этого пользователя.
В конце концов, для меня не имеет значения, использую ли я оркестровку или нет. Однако мне нужно решение, в котором я могу передать сообщение нескольким портам отправки, и у меня может быть только один, на самом деле использовать сообщение и отправить. Это необходимо для того, чтобы я мог легко редактировать и добавлять порты без необходимости вносить какие-либо изменения или решения, связанные с жестким кодом, в оркестровку.
2 ответа
Я обнаружил, что пример модели CBR действительно работает. Проблемой с маршрутизацией были подписки. Если бы я должен был подписать порт отправки на порт запроса-ответа, я должен был установить фильтр BTS.SPName (имя порта отправки) вместо фильтра BTS.ReceivePort. При этом сообщение было правильно отфильтровано. Ваш ответ тоже бы сработал, но он требует использования оркестровки, которой я пытался избежать.
Вы можете использовать прямую привязку к порту отправки оркестровки, чтобы внедрить сообщение обратно в окно сообщения db. Используя несколько групп портов, каждая группа портов может затем напрямую подписаться на нужный тип сообщения и отфильтровать продвигаемые свойства.