服务实例状态
在处理消息时,将会执行以下操作:
在接收位置,接收适配器(或传输组件)从外部应用程序接收消息,并将其提交到 BizTalk Server 进行处理。
注意
系统可以接收各种格式的消息:XML、平面文件或作为公司间的电子数据交换 (EDI)。
接收管道解密、解码并拆装该消息。
消息引擎将该消息及其快捷方式属性(例如消息类型和源)发送到 MessageBox 数据库。
在找到相匹配的订阅后,将根据一组架构和映射来处理该消息,有时也根据主机服务器上的业务规则或策略来处理该消息。
在处理完该消息后,最终生成的消息将保存(写入)到 MessageBox 数据库中。 此时已对快捷方式属性进行了修改,以指示从何处发送该消息,例如,使用哪个发送端口。
该消息的快捷方式属性将根据为发送端口定义的筛选器表达式进行计算,然后,MessageBox 数据库将该消息传送到相应的发送端口。
对发送管道和/或发送端口的订阅必须与要发送的消息相匹配。 将会对该消息进行加密并进行传输。
在此循环中的每个进程都会生成自己的事件集。
当服务实例(接收端口、业务流程、发送端口)处理通过 BizTalk Server 的消息时,这些服务实例的状态可以为以下状态之一。 本部分对这些状态进行了介绍,并提供了在它们生命周期的不同时间的状态示例。
服务实例状态
下表列出了服务实例的各种可能状态,并对每个状态进行了说明:
状态 | 说明 |
---|---|
在断点处 | 活动业务流程遇到断点,通常是 BizTalk Server 解决方案开发人员设置的断点。 该状态仅对业务流程有效。 |
准备运行 | 已激活但尚未开始运行的服务实例,通常由于资源暂时不可用,例如服务器的处理负载过大。 |
活动 | 正在运行的服务实例。 |
已冻结 | 实例状态保持在 MessageBox 数据库中,并且没有 Windows 服务运行该实例。 |
已完成,有消息被放弃 | 该服务实例已完成,但某些消息未被该实例使用。 |
暂停 (可恢复) | 实例已挂起,但可恢复该实例。 重要提示:恢复消息实例将会执行以下操作:
请注意,在你挂起某一计划实例然后恢复它时,该实例将进入冻结状态。 |
暂停 (不可恢复的) | 实例已挂起,且不可恢复该实例。 可以保存该实例所引用的消息,然后终止该实例。 请注意,在你挂起某一计划实例然后恢复它时,该实例将进入冻结状态。 |
待定挂起/待定终止 | 一种状态,但不是独立的状态。 可以将其与其他状态相结合。 要挂起或终止的控制消息已发送到服务实例,但该实例尚未提取该控制消息。 一次只允许一个待定操作。 当具有暂停操作的实例被冻结时,可以终止该实例。 |
跟踪的服务实例状态
下表显示服务实例跟踪状态,每种状态都附有说明。
状态 | 说明 |
---|---|
已开始 | 当前在 MessageBox 中的任何服务实例(例如处于“已挂起(可恢复)”状态或“在断点处”状态的服务实例)在 BizTalk 跟踪数据库中都显示为“已启动”。 |
已完成 | 服务实例处理已成功完成。 |
终止 | 服务实例已终止。 |
消息状态
下表显示消息的状态,以及每个状态的说明。
状态 | 说明 |
---|---|
已耗用 | 消息正在由服务实例进行处理。 |
进程内 | 消息已经传送到引擎并且正在进行处理。 消息在内存中。 |
已排队 | “已排队”包括 3 种状态:“已排队(等待处理)”、“已排队(计划以后送达)”和“已排队(等待重试)”。 |
已排队(等待处理) | 当按序送达发送端口正在重试上一条消息时,该消息处于按序送达状态下。 |
已排队(计划以后送达) | 消息正在等待通过已设置服务时段的发送端口进行发送。 |
已排队(等待重试) | 该消息与由于目标 URI 不可用而正在尝试重新发送该消息的发送端口相关联。 |
已挂起 | “已挂起”包括“已挂起(可恢复)”和“已挂起(不可恢复)”实例状态。 |
暂停 (可恢复) | 与消息相关联的服务实例已挂起,并且可以恢复。 恢复消息实例将执行以下操作: - 恢复消息传送实例。 - 将消息发送到发送端口。 - 发送端口将消息传送到目标;即使发送端口未处于“已启动”状态。 |
暂停 (不可恢复的) | 与此消息关联的服务实例已挂起,但无法恢复。 |
操作前后的实例状态
下表显示了操作前后的状态:
注意
开始和结束状态在左列和顶行中加粗显示。 操作显示在表的正文中。
开始状态 | 应用操作后的新状态 | ||||||
---|---|---|---|---|---|---|---|
在断点处 | 活动 | 已冻结 | 已挂起 | 终止 | 待定终止 | 待定挂起 | |
在断点处 | 从调试器附加 | 从调试器继续 | 停止 Windows 服务 | 终止 | 挂起 | ||
在断点处(已冻结) | 从调试器附加 | 从调试器继续 | 停止 Windows 服务 | 挂起 | 终止 | ||
准备运行 | 挂起 | 终止 | |||||
计划 | 运行时将提取实例,因为服务时段已开始 | ||||||
活动 | 停止 Windows 服务 | 终止 | 挂起 | ||||
已冻结 | 运行时提取实例 | 停止 Windows 服务 | 挂起 | 终止 | |||
挂起 (可恢复) | 在调试器中从断点处恢复 | 继续 | 终止 | ||||
暂停 (不可恢复) | 终止 | ||||||
已终止且带有未使用的消息 | 终止 | ||||||
待定挂起 | 可以尝试附加,但最终会失败 | 停止 Windows 服务 | 请求已处理 | 只有在冻结实例时,终止才会起作用 | |||
待定终止 | 可以尝试附加,但最终会失败 | 停止 Windows 服务,冻结实例 | 请求已处理,或实例已冻结 |
操作期间的实例状态
下表显示了系统对实例执行操作时状态的更改情况:
开始状态 | 操作 | |||||
---|---|---|---|---|---|---|
Terminate | 挂起 | 恢复 | 在断点处恢复 | 继续 | 附加 | |
在断点处 | 终止 | Suspended | 活动 | 在断点处 | ||
在断点处(已冻结) | 终止 | Suspended | 活动 | 在断点处 | ||
准备运行 | 终止 | Suspended | ||||
计划 | 终止 | Suspended | ||||
活动 | 终止 | Suspended | ||||
已冻结 | 终止 | Suspended | ||||
挂起 (可恢复) | 终止 | 活动 | 在断点处 | |||
暂停 (不可恢复) | 终止 | |||||
已终止且带有未使用的消息 | 终止 | |||||
待定挂起 | 已终止;只有在冻结实例时才会起作用 | 争用条件 | ||||
待定终止 | 终止;仅在实例解除冻结时才起作用 | 争用条件 |
注意
当系统向实例传送多个控制消息,并且该实例处理控制消息的顺序得不到保证时便会发生争用条件。