指定事件处理顺序
Notification Services 提供两个用于确定应用程序规则处理方式的选项。可以指定在每个生成器量程期间触发一次规则,还是每次事件批次到达时触发一次规则。这两个选项分别为“量程顺序”和“子量程顺序”。这两个选项提供了在严格的数据正确性和生成器性能之间的选择。默认情况下,Notification Services 使用量程顺序。有关生成器量程的详细信息,请参阅指定生成器量程持续时间。
量程顺序
在此模式中,Notification Services 按下列顺序在每个生成器量程中触发一次规则:
- 事件历史记录规则
- 事件驱动订阅规则
- 计划订阅规则
如果在量程中到达多个事件批次,Notification Services 将同时针对所有这些事件批次,处理事件历史记录规则和事件驱动订阅规则,就如同所有事件都属于同一批次一样。
要在量程中处理的所有计划订阅,将在量程期结束时进行一次性处理。
通过将量程内到达的所有事件和所有计划订阅分组,应用程序可以从批处理中实现明显的性能提升。但是,这一性能改善是以严格的排序正确性为代价的。如果排序正确性对于应用程序而言不是严格的要求,则请使用量程顺序。
子量程顺序
在某些情况下,需要确保所有的事件批次都按其接收的顺序分别处理,并确保计划订阅只使用在应处理的计划订阅之前到达的数据。这种情况下,需要使用子量程顺序。
子量程顺序按下列方式处理事件和子订阅:
- 处理第一个事件批次前,Notification Services 触发应在第一个事件批次到达之前处理的计划订阅的计划规则。
- Notification Services 然后按到达顺序触发每个事件批次的规则:
- 事件历史记录规则
- 事件驱动订阅规则
- 计划订阅规则
处理完所有事件批次之后,Notification Services 触发应在最后一个事件批次到达之后处理的所有订阅的计划订阅规则。
图示的量程和子量程顺序
下图显示了八个生成器量程。在这八个生成器量程中,有 12 个事件批次到达,有 12 个计划订阅应处理。
量程顺序的工作方式
生成器根据指定的事件处理顺序以不同的顺序处理 12 个事件批次和 12 个计划订阅。下表显示了生成器对每个量程的处理方式。
量程 | 量程顺序 | 子量程顺序 |
---|---|---|
处理量程 1 |
同时处理事件批次 E1、E2 和 E3。 没有要处理的计划订阅。 |
顺序处理事件批次 E1、E2 和 E3。 没有要处理的计划订阅。 |
处理量程 2 |
同时处理事件批次 E4 和 E5。 处理计划订阅 T1。 |
顺序处理事件批次 E4 和 E5。 处理计划订阅 T1。 |
处理量程 3 |
同时处理事件批次 E6 和 E7。 处理计划订阅 T2。 |
处理事件批次 E6。 处理计划订阅 T2。 处理事件批次 E7。 |
处理量程 4 |
处理事件批次 E8。 同时处理计划订阅 T3 和 T4。 |
处理事件批次 E8。 同时处理计划订阅 T3 和 T4。 |
处理量程 5 |
同时处理事件批次 E9 和 E10。 处理计划订阅 T5。 |
处理计划订阅 T5。 顺序处理事件批次 E9 和 E10。 |
处理量程 6 |
处理事件批次 E11。 同时处理计划订阅 T6 和 T7。 |
处理计划订阅 T6。 处理事件批次 E11。 处理计划订阅 T7。 |
处理量程 7 |
处理事件批次 E12。 同时处理计划订阅 T8 和 T9。 |
同时处理计划订阅 T8 和 T9。 处理事件批次 E12。 |
处理量程 8 |
没有要处理的事件批次。 同时处理计划订阅 T10、T11 和 T12。 |
没有要处理的事件批次。 同时处理计划订阅 T10、T11 和 T12。 |
配置量程或子量程顺序
若要配置子量程顺序,请将 ProcessEventsInOrder 属性设置为 true。量程顺序为默认设置,因此可以将 ProcessEventsInOrder 属性设置为 false,也可以将此属性排除在应用程序定义之外。
配置量程或子量程顺序
- 如果通过 XML 定义应用程序,则请使用 ProcessEventsInOrder Element (ADF) 定义顺序。
- 如果以编程方式定义应用程序,则请使用 ProcessEventsInOrder 属性 (NMO) 定义顺序。
请参阅
概念
指定应用程序执行设置
指定生成器量程持续时间
定义事件历史记录规则
定义订阅规则
定义事件规则
定义预定规则