处理失败的消息订阅

当 Microsoft BizTalk Accelerator for SWIFT (A4SWIFT) 反汇编程序处理 (分析和验证消息) 时,它会提升该消息的属性。 这些提升的属性提供有关消息的正确性和有效性的信息,以及A4SWIFT作为入站批处理的一部分接收消息时与批相关的信息。 有关这些属性的完整列表,请参阅 A4SWIFT_* 提升的属性

与本机 BizTalk 反汇编程序不同,A4SWIFT反汇编程序不会在处理产生错误或失败时挂起消息。 相反,它会将失败的消息发布到 MessageBox 数据库,就像发布有效消息一样。 因此,失败的消息可能会将错误详细信息带入 MessageBox 数据库。 可以从 MessageBox 数据库中检索消息、处理和修复消息,甚至可以将消息重新提交回 MessageBox 数据库。 如果消息实际 已挂起,则无法执行其中大多数任务。

可以通过提升的属性将A4SWIFT发布到 MessageBox 数据库的消息标识为失败或错误。 处理失败的消息时,SWIFT 反汇编程序在将消息发布到 MessageBox 数据库之前,会填充并提升 A4SWIFT_Failed 属性以及以下一个或多个其他属性:

  • A4SWIFT_ParseErrors 指示 (分析错误的数量,例如在处理过程中遇到的格式不正确的数据) 。

  • A4SWIFT_XmlValidationErrors 指示在处理过程中遇到的与架构) 相关的 XML 验证错误数 (,例如无效数据或不正确的类型。

  • A4SWIFT_BreValidationErrors 指示业务规则引擎 (BRE) 验证错误 (的数量,例如在处理过程中遇到违反 SWIFT 网络规则的数据) 。

  • 上述任何属性的计数大于零时,A4SWIFT_Failed为 true ;如果计数等于零,则为 false

    这些属性都是 Microsoft 的一部分。Solutions.A4SWIFT.Property 命名空间。 有关这些属性和其他升级属性的详细信息,请参阅 A4SWIFT_* 提升的属性

    若要捕获或检索失败的消息,需要创建筛选器表达式, (订阅) 发送端口或业务流程接收形状,其中包括上面列出的某些属性,作为表达式的 AND 子句。

    例如,若要订阅所有失败的消息,请将以下子句 (添加为 AND 子句(如果存在其他子句) ):

    微软。Solutions.A4SWIFT.Property.A4SWIFT_Failed == true

    若要订阅仅出现分析失败的消息,请同时添加以下子句:

    微软。Solutions.A4SWIFT.Property.A4SWIFT_Failed == true,AND Microsoft 。Solutions.A4SWIFT.Property.A4SWIFT_XmlValidationErrors == 0,ANDMicrosoft 。Solutions.A4SWIFT.Property.A4SWIFT_BreValidationErrors == 0;

    相反,对于设计为仅处理有效消息的发送端口或业务流程,包括“ANDMicrosoft ”。Solutions.A4SWIFT.Property.A4SWIFT_Failed == false“作为筛选器表达式中的子句。

注意

如果订阅重叠,A4SWIFT将满足所有订阅。 也就是说,如果多个服务 (发送端口或业务流程) 具有由特定消息实现的筛选表达式,则所有此类服务都将接收相同的消息。 例如,如果发送端口订阅所有失败的消息,而业务流程仅订阅分析失败的消息,则当A4SWIFT在处理消息时遇到分析错误时,将满足这两个订阅。 请务必消除跨服务订阅中不必要的重叠。

注意

如果A4SWIFT接收并处理消息,并将该消息发布到 MessageBox 数据库,但该消息不满足任何订阅,A4SWIFT将挂起该消息,并显示BizTalk Server错误,指示缺少订阅者。 例如,如果某个服务订阅所有消息“A4SWIFT_Failed == false”,但没有服务订阅“A4SWIFT_Failed == true”的消息,则分析或验证失败的消息确实会因缺少订阅者而被挂起。 此方案实际上使你能够模拟失败消息的传统挂起。 请务必订阅不希望暂停的所有消息。 有关 MessageBox 数据库订阅、发送端口、业务流程和筛选器表达式的其他详细信息,请参阅BizTalk Server帮助。

本部分包含: