2

我有以下行程: 测试行程

  • 单向接收位置将消息传递到提取内部消息的编排(无法在地图中执行此操作)。

  • 然后映射从编排返回的消息,并再次映射该映射的结果。使用 Microsoft.Practices.ESB.Services.Transform 服务。

  • 然后通过 Microsoft.Practices.ESB.Services.Routing 服务将其传递给 Web 服务,该服务可以正常触发,但我没有收到想要写入文件的预期响应。写入文件的消息是传递给 Web 服务的消息,而不是预期的响应。使用更简单的路线(即没有编排扩展程序的路线)测试 Web 服务表明 Web 服务按预期工作。

  • OffRamp 来自 GlobalBank.ESB 示例应用程序。

如何从 Web 服务获得所需的响应?

4

1 回答 1

2

所以终于设法找到了一个解决方案,我必须完全相信这个人

问题是 Microsoft.Practices.ESB.Services.Routing 服务只提供一种方式操作,所以即使你用双向消息交换模式标记你的解析器它也不会工作。

如果您在 BizTalk 管理控制台中检查 Microsoft.Practices.ESB 应用程序,它有一种单向动态发送端口 Microsoft.Practices.ESB.Agents_2.1.0.0_Microsoft.Practices.ESB.Agents.Delivery_DeliveryPort_31bf3856ad364e35 绑定到编排 Microsoft.Practices。 ESB.代理.交付。当您使用 Orchestration 扩展程序并使用 Microsoft.Practices.ESB.Services.Routing 服务时,此端口用于发送任何呼叫,因为这是单向端口,您不会得到响应。

您需要在 callwebservice 形状中使用双向编排。MultipleWebServices ESB 示例中提供了一个双向编排示例。如果您部署该编排并将其注册为行程服务并以 callwebservice 形式使用它,它将起作用。

它或多或少做到了:) 通过在 itineraryServices 节点之间的 esb 配置中添加一个条目,部署编排并将其作为行程服务注册到 ESB:

          <itineraryService id="04BD6120-06E4-43D3-A56F-2FF061D59862" name="ESB.MultipleWebServices.Orchestrations.TwoWayRouting" type="ESB.MultipleWebServices.Orchestrations.TwoWayRouting, Biztalk.EsbGeneric.Orchestrations, Version=1.0.0.0, Culture=neutral, PublicKeyToken=140bc5dcbb9afcea" scope="Orchestration" stage="None"/>

使用 guidgen 创建一个 id,类型由管理控制台中编排的名称和程序集(逗号分隔)组成,并且会根据您部署到的应用程序而有所不同。范围和阶段如上所示。

最初我在发送端口 Biztalk.HoopleEsbGeneric.Orchestrations_1.0.0.0_ESB.MultipleWebServices.Orchestrations.TwoWayRouting_RoutingPort_140bc5dcbb9afcea 上出现错误,但将发送和接收管道分别更改为 PassThruTransmit 和 PassThruReceive 解决了这个问题。

于 2013-04-08T14:21:10.780 回答