キューイング
(本機能はExtensionsトライアルで試用可能です)
概要¶
高負荷処理を、リクエスト中に即時実行するのではなく、バックグラウンドジョブとしてキュー(待ち行列)へ登録し、順次実行する機能です。ユーザは、画面を通じて自分が実行したジョブの一覧を確認できますが、他のユーザが実行したジョブの一覧を確認することはできません。
本機能の効果¶
本機能を有効化することで、以下の効果を得られます。
- 高負荷処理のリクエストタイムアウトを防ぐ
- 大量データ処理中のユーザ操作ブロックを防ぐ
- 高負荷処理の処理状況を可視化する
マルチテナント環境での利用¶
本機能をマルチテナント環境で利用する場合は、本ページに加え、「マルチテナント管理機能:キューイング」を参照してください。
キューイングの基本仕様¶
- ユーザがキューイングに対応した操作を実行すると、すぐには実行されず、ジョブとしてキューへ登録されます。キューへの登録は即座に完了し、ユーザは別の操作を実行できます。
- キューに登録されたジョブはジョブの管理画面で確認できます。
- ジョブは、最初、実行を待つ「待機」という「状況」でキューへ登録されます。ユーザは「待機」中のジョブをいつでもキャンセルできます。
- キューに登録されたジョブは、同一テナントにおいて先に登録されたジョブから順に1つずつ取り出され、実行されます。
- 実行が始まると、ジョブの「状況」は「待機」から「実行中」へ変わります。「実行中」のジョブは、キャンセルすることも、削除することもできません。
- ジョブの実行中に、予期せずプリザンターが再起動した場合、「実行中」のジョブは既定の設定では「エラー」に変わります。この挙動はパラメータ設定で変更可能です。
- ジョブの実行時間はプリザンターにより監視されています。ジョブの実行時間がパラメータで設定した閾値(時間)よりも長くなると、「状況」が「実行中」から「実行中(時間超過)」に変わります。「状況」が「実行中(時間超過)」のジョブは、ボタン操作により次のジョブ1つと並列実行できます。
- 実行中のジョブが正常終了すると、ジョブの「状況」は「実行中」から「完了」へ変わります。
- 実行中のジョブが異常終了すると、ジョブの「状況」は「実行中」から「エラー」へ変わります。
- 「状況」が「キャンセル」、「エラー」、「完了」のジョブは、画面操作で削除できるほか、一定時間経過後に自動削除するように設定することができます。
対応するジョブ種別¶
| 対応バージョン | 対応するジョブ種別 |
|---|---|
| 1.5.6.0 以降 | レコードの「エクスポート」 |
| 1.5.7.0 以降 | レコードの「インポート」 |
| 1.5.8.0 以降 | レコードの「AI連携」 |
| 1.5.9.0 以降 | レコードの「一括削除」 |
注意事項¶
- 本機能を有効化する際は、BackgroundJobs.jsonのパラメータOutputFilePathとInputFilePathに適切な値を設定してください。未設定の場合、処理がエラーとなり、キュー機能を利用できません。
制限事項¶
- シングルテナントの場合、キューは同時実行1件(直列1本)で処理されます。
- マルチテナントの場合、キューは各テナントごとに同時実行1件(直列1本)で処理されます。
前提条件¶
- 年間サポートサービスの下記プラン契約者限定の機能です。
| エントリー | ベーシック | ベーシックプラス | ビジネス | ビジネスプラス | アンリミテッド |
|---|---|---|---|---|---|
| 〇 | 〇 | 〇 |
キューイングを有効化する¶
キューイングを有効化するには、BackgroundJobs.jsonのBackgroundQueueをtrueに設定してください。
ジョブの管理画面¶
キューイングに対応したジョブを実行すると、ジョブはキューへ登録され、ジョブの管理画面から確認、操作できるようになります。詳細はジョブの管理画面を参照してください。
ジョブの状況¶
- キューイングに対応した操作を実行すると、キューへジョブとして登録され、「状況」が「待機」となります。
- 「状況」が「待機」のジョブをキャンセルした場合は、「キャンセル」へ変化します。
- キューに登録されたジョブは先に登録されたものから順に実行され、「状況」が「待機」から「実行中」に変化します。
- 「状況」が「実行中」のジョブは、正常終了した場合に「完了」へ、異常終了した場合に「エラー」へ、それぞれ変化します。
- 「状況」が「実行中」のジョブが、パラメータで設定した閾値(時間)を超えても、「完了」にも「エラー」にもならない場合、「実行中(時間超過)」へ変化します。
- 「準備中」は、インポートなど、ファイルアップロードが必要な処理専用の「状況」です。エクスポート処理はこの「状況」に変化しません。「状況」が「準備中」のままBackgroundJobs.jsonのBackgroundJobTimeoutに設定した時間を超過(タイムアウト)した場合、「エラー」に変化します。エクスポートのように「準備中(時間超過)」には変化しません。「準備中」のジョブがある状態でアプリケーションが障害から復旧した場合、「BackgroundJobs.json」のRecoverActionの設定値にかかわらず、「エラー」に変化します。
| 状況 | 説明 | キャンセル | 削除 |
|---|---|---|---|
| 待機 | キューへ登録され、実行待ちの状態。 | 可 | 可 |
| 準備中 | CSVのアップロード中であることを示す状態 | - | - |
| 実行中 | キューから取得され、処理中の状態。 | - | - |
| 完了 | 正常終了し、出力ファイルをダウンロードできる状態。 | - | 可 |
| エラー | 異常終了し、エラー内容を確認できる状態。 | - | 可 |
| キャンセル | 「待機」中にキャンセルされた状態。 | - | 可 |
| 実行中(時間超過) | 設定した時間(閾値)を超え、処理が続いている状態 | - | - |
ジョブの削除¶
完了したジョブや、エラーになったジョブ、キャンセルしたジョブは、ユーザが削除しない限りキューに残ります。以下の機能で、不要なジョブを削除できます。
- ジョブの管理画面では不要になったジョブを一括削除できます。
- 「詳細画面」では不要になったジョブを1つずつ削除できます。
- BackgroundService.jsonのパラメータ「DeleteBackgroundJobs」をtrueに設定することで、「状況」が「完了」「エラー」「キャンセル」となったジョブを、一定期間経過後に自動削除する機能を有効化できます。
- ジョブを削除すると、ジョブの完了と共に保存される「出力ファイル」も削除されます。
実行時間が長いジョブへの対応¶
3つのジョブ、ジョブA、ジョブB、ジョブCが、この順番でキューに登録されているケースで説明します。
ジョブAが「実行中」に変わると、次のジョブBは、ジョブAの完了を待たなければなりません。ジョブAの実行時間が長い場合、後続のジョブB、ジョブCがすぐに完了するジョブであっても、直前のジョブの完了を待つ必要があります。
そこで、ジョブの実行時間に閾値を定め、閾値を超えても「状況」が「完了」または「エラー」に変わらないジョブを、次のジョブ1つと並列実行できるようにしています。閾値を超えたジョブは「状況」が「実行中(時間超過)」に代わります。ジョブAの実行中に、ジョブの管理画面を開き、ジョブAを選択して「次のジョブを実行」ボタンをクリックすると、次に待機中のジョブBを、ジョブAと並列実行できます。ジョブBがジョブAよりも先に「完了」した場合、もう一度ジョブAを選択して「次のジョブを実行」ボタンをクリックすると、次に待機中のジョブCをジョブAと並列処理できます。
ジョブの実行時間の閾値はBackgroundJobs.jsonのパラメータBackgroundJobTimeoutで設定できます。
| 「次のジョブを実行」に関する注意事項 |
|---|
| 「次のジョブを実行」によりジョブの並列実行を増やすとリソースの消費が進み、高負荷処理のリクエストタイムアウトを防ぐというキューイングの効果が薄れる可能性があります。マルチテナント環境下では「次のジョブを実行」を行ったジョブと同一のテナントの待機中ジョブ1件の処理を開始します。他のテナントのジョブを開始することはありません。 |
ジョブの参照・操作範囲¶
ユーザが参照、操作できるジョブの範囲は、ユーザの権限に応じて制御されます。
| 対象ユーザ | 参照・操作範囲 |
|---|---|
| 特権ユーザ | すべてのテナントのすべてのバックグラウンドジョブ |
| テナント管理者 | 自テナントのすべてのバックグラウンドジョブ |
| 一般ユーザ | 自テナント内の自分のバックグラウンドジョブのみ |
ジョブが予約されているときの表示¶
1.5.9.0
キューイングでは、ジョブは登録した時点ではなく、順番が来たときに実行されます。そのため、ジョブの実行を待っている間に同じテーブルのレコードを一括削除・一括更新・インポートすると、予約中のジョブの処理と重なることがあります。キューにジョブが登録されているテーブルを開くと、一覧画面の上部や、操作ダイアログの一部に、ジョブが予約されていることを知らせるメッセージが表示されます。そのテーブルに未完了の処理があることを、操作の前に確かめられます。
| 表示される場所 | メッセージ |
|---|---|
| 画面上部のメッセージ | バックグラウンドジョブが予約されています:{ジョブ種別} |
| 「エクスポート」「インポート」「一括更新」のダイアログ | バックグラウンドジョブが予約されています。 |
| 「一括削除」の確認メッセージ | バックグラウンドジョブが予約されています。本当に削除してもよろしいですか? |
{ジョブ種別}の部分には、「エクスポート」のようなジョブ種別の表示名が入ります。予約されているジョブ種別が複数ある場合は、「エクスポート, インポート」のようにカンマ区切りで並びます。
画面上部のメッセージ¶
画面上部のメッセージは、期限付きテーブルと記録テーブルの一覧画面、カレンダー、クロス集計、ガントチャート、バーンダウンチャート、時系列チャート、分析チャート、カンバン、画像ライブラリに表示されます。
メッセージには、予約されているジョブのジョブ種別が表示されます。メッセージの「バックグラウンドジョブ」をクリックすると、ジョブの管理画面が表示されます。
ダイアログ¶
「エクスポート」「インポート」「一括更新」のダイアログでは、上部にメッセージが表示されます。一括更新はキューイングに対応していませんが、テーブルにジョブが予約されている場合は、一括更新のダイアログにもメッセージが表示されます。
一括削除の確認メッセージ¶
一覧画面で「一括削除」ボタンをクリックすると表示される確認メッセージに、ジョブが予約されていることを知らせる文が加わります。
表示の条件¶
- 画面を開いた時点で、表示中のテーブルに「状況」が「準備中」「待機」「実行中」「実行中(時間超過)」のジョブがある場合に表示されます。ジョブが「完了」「エラー」「キャンセル」になると、表示されなくなります。
- 他のユーザが実行したジョブも対象です。ただし、一般ユーザはジョブの管理画面で他のユーザのジョブを確認できません(「ジョブの参照・操作範囲」を参照)。
- 対象のジョブ種別は「エクスポート」「インポート」「一括削除」です。「AI連携」のジョブは対象外です。
- 情報公開機能で公開したページには表示されません。
対応バージョン¶
| 対応バージョン | 内容 |
|---|---|
| 1.5.6.0 以降 | 機能追加 |
| 1.5.7.0 以降 | 対応するジョブ種別に「インポート」を追加 |
| 1.5.8.0 以降 | 対応するジョブ種別に「AI連携」を追加 |
| 1.5.9.0 以降 | 対応するジョブ種別に「一括削除」を追加、ジョブが予約されているときの表示を追加 |






