我们有一个简单的Envelope XML,我试图在HTTP发送/接收端口的接收端使用自定义管道进行解压缩。 BizTalk将通过信封中的第一组,但我们得到的错误是0xC0C01B4C(Zombie)。出于测试目的,我将接收结果发送到文件格式的文件夹。我希望之前有人见过这个,因为我一直在尝试许多不同的方法来解决这个问题。
这是信封消息
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema xmlns="http://CC.Schemas.ADDR.ADDR_IDs_Envelope" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:ids="http://CC.Schemas.ADDR.ADDR_IDs" targetNamespace="http://CC.Schemas.ADDR.ADDR_IDs_Envelope" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation=".\ADDR_IDs.xsd" namespace="http://CC.Schemas.ADDR.ADDR_IDs" />
<xs:annotation>
<xs:appinfo>
<b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
<b:references>
<b:reference targetNamespace="http://CC.Schemas.ADDR.ADDR_IDs" />
</b:references>
</xs:appinfo>
</xs:annotation>
<xs:element name="ADDR_IDs_Envelope">
<xs:annotation>
<xs:appinfo>
<b:recordInfo body_xpath="/*[local-name()='ADDR_IDs_Envelope' and namespace-uri()='http://CC.Schemas.ADDR.ADDR_IDs_Envelope']/*[local-name()='Messages' and namespace-uri()='']" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Messages">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="ids:ADDR_IDs" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
详细信息ID的架构
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema xmlns="http://CC.Schemas.ADDR.ADDR_IDs" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://CC.Schemas.ADDR.ADDR_IDs" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ADDR_IDs">
<xs:complexType>
<xs:sequence>
<xs:element name="TransactionID" type="xs:string" />
<xs:element name="JWID" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
很简单,您的Orchestration缺少一个循环,它会侦听同一个Correlation的下一条消息。因此,在处理完第一条消息后,它将退出,而其他消息则不会被处理。
您需要的概念称为顺序车队。您需要在循环内部具有另一个接收形状(其具有在第一个接收形状上初始化的跟随相关集作为初始化相关集)以及退出循环的方式,例如,下面是等待退出循环的时间限制。你需要让这个退出条件正确,否则仍有可能出现僵尸。
答案 1 :(得分:0)
我想发布一个关于此问题的更新,因为我决定使用Orchestration Pipeline Method并遇到架构问题。要解决这个问题,我必须
关于这一点,您必须使用带有Orchestration Pipeline方法的Scope,这样它就不会像我预期的那样按顺序发送消息。
在我的一个编排中,我还必须使用顺序护送,以便我可以按顺序处理信封消息,而不是所有这些消息都需要这样,所以第一种方法很有效地修复了我有的Zombie消息问题。由于我已将此操作分成两部分,因此我最终将信封保存到文件夹中,然后将其拾取并通过顺序护送处理它。
现在一切正常运作