イベント処理順序の指定
Notification Services には、アプリケーション ルールの処理方法を決定する 2 つのオプションが用意されています。ルールを各ジェネレータ クォンタム期間につき 1 回実行するか、あるいはイベント バッチが到着するたびに実行するかのどちらかを指定できます。これらの 2 つのオプションはそれぞれ、クォンタム シーケンスおよびサブクォンタム シーケンスと呼ばれます。この 2 つのオプションでは、厳密なデータの正確性とジェネレータのパフォーマンスのどちらかを選択することになります。既定では、Notification Services はクォンタム シーケンスを使用します。ジェネレータ クォンタムの詳細については、「ジェネレータ クォンタム期間の指定」を参照してください。
クォンタム シーケンス
このモードでは、Notification Services は、各ジェネレータ クォンタムにつき 1 回、次の順序でルールを実行します。
- イベント記録ルール
- イベント ドリブン サブスクリプション ルール
- 定期的なサブスクリプション ルール
クォンタム中に複数のイベント バッチが到着すると、Notification Services は、すべてのイベントが同じバッチに含まれているものとして、それらすべてのイベント バッチに対してイベント記録ルールとイベント ドリブン サブスクリプション ルールを一度に処理します。
クォンタム中に処理される定期的なサブスクリプションはすべて、クォンタム期間の最後に一度に処理されます。
クォンタム中に到着したすべてのイベント、およびクォンタム中に処理する必要があるすべての定期的なサブスクリプションをグループ化することで、アプリケーションはバッチ処理により大幅なパフォーマンスの向上を実現できます。ただし、このようなパフォーマンス上の利点がある一方で、厳密な順序の正確性は損なわれます。アプリケーションにとって順序の正確性が厳密な要件でない場合は、クォンタム シーケンスを使用してください。
サブクォンタム シーケンス
場合によっては、すべてのイベント バッチを、それらのバッチを受信した順序で個別に処理したり、定期的なサブスクリプションがその処理期限までに到着したデータのみを使用できるようにする必要があります。この場合は、サブクォンタム シーケンスを使用する必要があります。
サブクォンタム シーケンスは、イベントとサブスクリプションを次のように処理します。
- 最初のイベント バッチを処理する前に、Notification Services は、最初のイベント バッチが到着する前に処理する必要がある定期的なサブスクリプションに対して定期的なルールを実行します。
- 次に、Notification Services は、各イベント バッチに対し、それらが到着した順序でルールを実行します。
- イベント記録ルール
- イベント ドリブン サブスクリプション ルール
- 定期的なサブスクリプション ルール
すべてのイベント バッチが処理されると、Notification Services は、最後のイベント バッチの到着後に処理する必要があるサブスクリプションに対して定期的なサブスクリプション ルールを実行します。
クォンタム シーケンスとサブクォンタム シーケンスの図
次の図は、8 つのジェネレータ クォンタムを示しています。これら 8 つのジェネレータ クォンタムの間に、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 要素 (ADF) を使用してシーケンスを定義します。
- プログラムでアプリケーションを定義している場合は、ProcessEventsInOrder プロパティ (NMO) を使用してシーケンスを定義します。
参照
概念
アプリケーションの実行設定の指定
ジェネレータ クォンタム期間の指定
イベント記録ルールの定義
サブスクリプション ルールの定義
イベント ルールの定義
定期的なルールの定義