Routing 从Biztalk中的不同接收位置路由相同消息类型的消息

Routing 从Biztalk中的不同接收位置路由相同消息类型的消息,routing,integration,biztalk,Routing,Integration,Biztalk,我有一个简单的场景,我必须将邮件从一个文件夹路由到另一个文件夹。现在,这些邮件可以来自10个不同的来源(文件夹),并被路由到10个不同的位置(文件夹) …是接收位置和DestA、DestB、DestC,。。。是目的地 因此,来自SourceA的文件将被路由到DestA,依此类推 现在,我已经实现了这个场景。 我的问题是什么是最好的解决办法 1) 一个具有10个接收位置的接收端口,逻辑接收端口与物理端口绑定。一个侦听形状将侦听消息,并在执行单独的任务后,将路由到相应的位置。也可能有单独的业务流程,

我有一个简单的场景,我必须将邮件从一个文件夹路由到另一个文件夹。现在,这些邮件可以来自10个不同的来源(文件夹),并被路由到10个不同的位置(文件夹)

<考虑<代码> SourceA,SooCeb,SourceC < /代码>…是接收位置和
DestA、DestB、DestC
,。。。是目的地

因此,来自
SourceA
的文件将被路由到
DestA
,依此类推

现在,我已经实现了这个场景。 我的问题是什么是最好的解决办法

1) 一个具有10个接收位置的接收端口,逻辑接收端口与物理端口绑定。一个侦听形状将侦听消息,并在执行单独的任务后,将路由到相应的位置。也可能有单独的业务流程,因为可能必须为每个传入消息执行特定任务

2) 10个接收位置,其中所有消息都发布到消息框,并且在编排中有一个动态逻辑接收端口

主要问题是,从源位置发出的消息应单独路由到相应的目标位置

注意:这些位置的消息类型和数据也可以完全相同。因此,基于某些数据字段的路由是不可能的


如果您需要更多的澄清,请告诉我。

在这种情况下,最好的答案是最简单的

  • 10个接收端口/位置
  • 10个发送端口

发送端口筛选器基于BTS.ReceivePortName。

如果没有可路由的数据属性,则需要可以路由的上下文属性。根据Johns-305答案,如果只发送消息而没有业务流程,则可以使用BTS.ReceivePortName。但是,如果您有业务流程,则必须确保保留BTS.ReceivePortName或使用另一个提升的上下文属性

上下文属性我们更喜欢使用BTS.Operation,因为这是自动升级的,可以通过以下方法之一进行设置

  • 在WCF WebHttp中,通过Http方法和URL映射接收位置
  • 在WCF WSHttp中,通过其操作
  • 通过让BRE Pipeline组件设置操作来创建其他端口
  • 来自通过逻辑端口的操作名称设置的业务流程

如果真的是1-1路由方案,我将投票给John-305……这意味着RCV位置a将始终路由到目的地a——然后只需将接收位置扩展到单独的接收端口,并相应地订阅发送端口即可

现在,如果您正在执行内容驱动的路由,这意味着消息中的某些内容决定了消息的去向,那么您可以执行编排路由……但这可能有些过头了。我将为平面文件创建一个模式,使用属性模式提升用于路由消息的任何字段,并向该字段订阅发送端口

希望这有帮助