错误消息将传送到已订阅接收它们的业务流程或发送端口。 通常,订阅基于出现消息传送错误的端口(发送端口或接收端口)的名称来选择错误消息。 订阅还可能对升级到错误消息上下文的其他属性(例如, InboundTransportLocation 或 FailureCode)进行筛选。
错误消息规范
错误消息是原始失败消息的克隆,其中曾经升级的所有属性将降级,一组特定于错误的属性将升级到消息上下文。 以前升级的属性降级是为了防止非有意地将其传送给未指定接收错误消息的订户。 发布错误消息以分发给订户(业务流程、发送端口和发送端口组)。
提升到错误消息上下文的属性都坐落 BizTalk Server 中的 ErrorReport 命名空间下。 这些限制如下:
属性名称数据类型已升级说明
FailureCode
xs:string
是
错误代码。 十六进制值,在 BizTalk Server 管理控制台北报告该值。
FailureCategory
xs:int
是
不使用此属性。 未定义其值。
说明
xs:string
否
错误说明。 与写入应用程序风波日志中的内容相同的确诊文本,提供有关此消息传送失败的信息。
MessageType
xs:string
是
失败消息的消息类型,如果消息类型不确定则为空。
BizTalk Server 使用消息类型将消息与其 XML 架构相关联。 消息类型由将构架命名空间与构架根节点联接构成: #rootnode. 注意: 确定消息类型之前失败的消息未设置此属性。
ReceivePortName
xs:string
如果失败发生在入站处理期间(在接收端口中),则为“已升级” 。
如果在发生端口发生失败,则为“未升级” 。
发生失败的接收端口的名称。
InboundTransportLocation
xs:string
如果失败发生在入站处理期间(在接收端口中),则为“已升级” 。
如果在发生端口发生失败,则为“未升级” 。
发生失败的接收位置的 URI。
SendPortName
xs:string
如果失败发生在出站处理期间(在发送端口中),则为“已升级” 。
如果失败发生在接收端口中,则为“未升级” 。
发生失败的发送端口的名称。
OutboundTransportLocation
xs:string
如果失败发生在出站处理期间(在发送端口中),则为“已升级” 。
如果失败发生在接收端口中,则为“未升级” 。
发生失败的发送位置的 URI。
ErrorType
xs:string
是
指示错误包含的消息的类型。 此属性仍然包含值 FailedMessage,表示错误包含原始的失败消息。
RoutingFailureReportID
xs:string
是
存在路由故障时,此属性提供 BizTalk Server 生成的路由故障报告的 ID。 路由故障报告是由 BizTalk Server 生成和挂起的特殊消息。 此消息没有正文,但它具有失败消息的上下文。 使用此 ID,错误处理业务流程或发送端口可以查询 MessageBox 数据库并处理路由故障报告。 例如,业务流程在获取失败消息以后可能要中止路由故障报告。
FailureTime
xs:dateTime
失败发生的日期时间
FailureMessageID
xs:string
FailureInstanceID
xs:string
FailureAdapter
xs:string
处理错误消息
错误处理由其筛选器与已升级到错误消息的消息上下文的属性匹配的业务流程或发送端口订阅指定。
安全涵义
将与原始消息关联的标示(它的初始标示或它的最后标示,由接收管线的解析参与方阶段确定)分配给错误消息。
限制消息只能传送给授权的订阅端口和业务流程的安全机制也应用于错误消息。
对于订阅错误消息但未使用适当的揭秘证书进行配置的发送端口,不会收到在接收管线(原始消息通过其步入 BizTalk Server)解密阶段之内或之前基于消息传送失败形成的错误消息。 而失败消息将放置在挂起队列中。
适配器消息传送失败
如果适配器挂起消息,则会发布错误消息。 如果消息未挂起,则不会生成错误消息。
事务性接收管线
如果事务性接收管线引起异常(指定事务应被终止),则事务将终止,并发布错误消息。
如果事务性接收管线显式挂起消息(指定 MessageDestination = SuspendQueue),则容许当前事务继续(并且可能被递交,除非此后的阶段指定将其中止),并且发布所生成的错误消息。
要求响应发送端口
如果从业务流程发送恳求消息,而恳求消息传输失败或其响应在入站处理时失败,则不管是否早已路由失败消息,业务流程都将获得异常。
在将要求响应发送端口联接到恳求响应接收端口的情况下,不管是否早已路由失败消息,接收端口都将获得响应消息(如果传输成功)或 NACK(如果传输失败)。
单向发送端口
如果从业务流程通过配置送达通知的发送端口发送消息,则不管是否早已路由了错误消息,业务流程都将收到送达通知。 换句话说,即使端口在处理期间遇见消息传送失败,发送端口也将为业务流程生成送达通知。 通知会确认到端口的送达,但不会确保通过端口成功进行处理。
恢复挂起消息
大多数入站处理(即从接收适配器(包括)到发布到 MessageBox(不包括)的处理)失败而且其失败未处理的消息将会作为可恢复消息挂起。 例外情况是来自单向接收端口的恳求消息将作为不可恢复消息挂起。
消息一般以其原始方式(管道处理之前的方式)挂起,但以下两种消息除外:
导致消息挂起(不可恢复)的情况
通常,挂起的消息是可恢复的,不过在个别情况下,也会导致不可恢复的消息:
另请参阅
错误处理
使用确认
消息按序送达