我的应用程序中有一个Orchestration,它接收来自MSMQ的输入的XML消息,对其进行处理,然后最终将其发送到OnRamp WCF发送端口。现在OnRamp端口已设置以下配置 -
应用程序:MyApplication
优先级:5
路由失败消息:false
停止发送失败:false
发送管道:Microsoft.BizTalk.DefaultPipelines.PassThruTransmit
动态:false *
双向:false
地址:http://localhost/ESB.ItineraryServices.Generic.WCF/ProcessItinerary.svc
类型:WCF-WSHttp
我的要求是,当Orchestration将XML(最终输出)发送到此端口时,这些消息必须由其他业务流程选择,这在我的情况下不会发生。所有消息都卡在此端口中。请帮我解决这个问题。
谢谢!
答案 0 :(得分:0)
为什么路由到物理发送端口的消息会被另一个业务流程拾取?
如果这是您想要的行为,我认为WCF发送端口不是正确的方法。如果您希望业务流程发布的消息激活另一个业务流程,请使用直接绑定端口,该端口会将这些消息直接写入消息框。然后在您确定将与已发布消息匹配的第二个业务流程的激活接收形状上设置适当的订阅。
答案 1 :(得分:0)
因此,我从您的问题中了解到您需要从第一个业务流程中调用另一个业务流程。可能您正在使用ESB Toolkit(通常我们使用术语offRamp和onRamp with toolkit)。
ESB工具包方式:
我建议使用行程和业务流程扩展器来路由消息。在内部,它仅使用DirectBound端口。 Here就是一个例子。
没有ESB工具包:
Tom W建议的是正确的。但请确保在第二个业务流程的直接绑定端口创建订阅时,Filter Expression中使用的上下文属性必须是唯一的,否则如果过滤器表达式是通用的并且匹配多个订阅者,则每个订阅者将选择一个消息副本。 / p>