Filter Biztalk发送端口组和筛选

Filter Biztalk发送端口组和筛选,filter,biztalk,send-port,Filter,Biztalk,Send Port,因此,我的解决方案需要的模型如下: 我需要轮询数据库,并根据结果创建对数据库的请求以获取更多数据,获取响应并将其传递给一组端口,根据提升的属性,这些端口中只有一个会执行操作 看起来是这样的: 但是,如果将“Temp Out”分配给发送端口组,则消息将发送到该组中的所有端口,而不考虑每个端口上设置的过滤器。根据我的理解,这是预期的行为(阅读) 因此,我探索了其他选项,如使用SDK中的基于内容的路由(CBR示例)。你可以查看这个 我尝试了这一点,并完全删除了编排(它真的不需要)。但是,存在主要的

因此,我的解决方案需要的模型如下:

我需要轮询数据库,并根据结果创建对数据库的请求以获取更多数据,获取响应并将其传递给一组端口,根据提升的属性,这些端口中只有一个会执行操作

看起来是这样的:

但是,如果将“Temp Out”分配给发送端口组,则消息将发送到该组中的所有端口,而不考虑每个端口上设置的过滤器。根据我的理解,这是预期的行为(阅读)

因此,我探索了其他选项,如使用SDK中的基于内容的路由(CBR示例)。你可以查看这个

我尝试了这一点,并完全删除了编排(它真的不需要)。但是,存在主要的路由/订阅错误,经过进一步研究,如果您有请求响应端口,则似乎无法执行此操作。关于这方面的一些文章。我的问题和用户的差不多


最后,我是否使用编排对我来说并不重要。但是,我需要一个解决方案,在该解决方案中,我可以将消息传递到多个发送端口,并且只能让一个端口实际使用消息并发送。这是必需的,这样我就可以轻松编辑和添加端口,而无需修改业务流程中的任何其他内容或硬代码决策。

您可以使用业务流程的发送端口将消息注入消息框数据库。使用多个端口组,每个端口组可以直接订阅所需的消息类型,并根据提升的属性进行筛选

我发现CBR示例模型确实有效。路由的问题在于订阅。如果要将发送端口订阅到请求响应端口,则必须设置BTS.SPName(发送端口名称)过滤器,而不是BTS.ReceivePort过滤器。通过这样做,消息被正确过滤。你的答案也会起作用,但它需要使用一种我试图避免的编排。

某种程度上我找到了解决方案。我删除了业务流程,提升了属性,并在第二个和第三个端口上,将筛选器放在定义BTS.SPName的位置(我原以为是存储过程名,但现在理解为发送端口名)。路由问题是因为我没有完全订阅它们。