指定事件處理順序
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) 來定義順序。
請參閱
概念
指定應用程式執行設定
指定產生器配量持續時間
定義事件紀事輯規則
定義訂閱規則
定義事件規則
定義排程規則