有些事件主题支持阻止事件。可扩展性订阅的行为取决于主题是否支持这些事件类型以及订阅的配置方式。
Cloud Assembly 可扩展性订阅可以使用两大类事件主题:非阻止事件主题和阻止事件主题。事件主题类型定义了可扩展性订阅的行为。
非阻止事件主题
非阻止事件主题仅允许创建非阻止订阅。系统以异步方式触发非阻止订阅,您不能依赖订阅的触发顺序。
阻止事件主题
有些事件主题支持阻止。如果订阅标记为阻止,则运行阻止订阅的可运行项之前,任何其他具有匹配条件的订阅都不会收到符合设置条件的所有消息。
阻止订阅按优先级顺序运行。最高优先级值是 0(零)。如果同一个事件主题有多个优先级相同的阻止订阅,这些订阅将基于订阅名称按反向字母顺序运行。处理完所有阻止订阅后,消息会同时发送到所有非阻止订阅。由于阻止订阅以同步方式运行,因此当后续订阅收到通知时,已更改的事件负载包含已更新的事件。
可以使用阻止事件主题管理相互依赖的多个订阅。
例如,您有两个置备工作流订阅,其中第二个订阅取决于第一个订阅的结果。如果第一个订阅在置备期间更改某个属性,则第二个订阅会在文件系统中记录该新属性(例如计算机名称)。如果 ChangeProperty 订阅的优先级值设置为 0,则 RecordProperty 的优先级值设置为 1,因为第二个订阅使用第一个订阅的结果。置备计算机时,ChangeProperty 订阅会开始运行。由于 RecordProperty 订阅条件基于置备后条件,因此事件会触发 RecordProperty 订阅。但是,由于 ChangeProperty 工作流是阻止工作流,因此在完成之前,此工作流不会收到该事件。当计算机名称已更改并且第一个工作流订阅已完成后,第二个工作流订阅会开始运行并在文件系统中记录该计算机名称。
恢复可运行项
对于阻止事件主题,可以将恢复可运行项添加到订阅。如果主可运行项失败,则订阅中的恢复可运行项将运行。例如,您可以创建一个工作流订阅,其中主可运行项是在 CMDB 系统(如 ServiceNow)中创建记录的工作流。即使该工作流订阅失败,也可能会在 CMDB 系统中创建一些记录。在这种情况下,可以使用恢复可运行项清理失败的可运行项在 CMDB 系统中留下的记录。
对于包含相互依赖的多个订阅的用例,可以将 ebs.recover.continuation 属性添加到恢复可运行项。使用此属性,可以指示在当前订阅失败时可扩展性服务是否必须继续执行链中的下一个订阅。