キュー管理¶
タスクキューはタスクメッセージの集合であり、先入れ先出し方式(FIFO: First In, First Out)で管理されています。
- 登録時、タスクメッセージはタスクキューの最後尾に追加されます。
- タスクキューに登録されたタスクメッセージは先頭のものから順次取得されます。
タスク管理アプリケーションは各種APIを通じてタスクキューを管理することができます。 タスクキューの管理には以下のような内容が含まれます。
- タスクキューの停止または起動
- タスクキューの追加または削除(直列タスクキューの場合のみ)
並列タスクキュー¶
並列タスクキューは並列処理機能を利用する場合にタスクメッセージを登録するタスクキューです。
タスクメッセージが処理実行可能となる条件¶
タスク処理サービスは並列タスクキューの処理状態が有効状態である場合のみ、先頭に存在するタスクメッセージを任意のタイミングで取得することが可能です。 並列タスクキューの処理状態については並列タスクキューの処理状態を参照してください。
並列タスクキューの処理状態¶
並列タスクキューは以下のいずれかの状態にあります。
-
この状態にある場合、並列タスクキューに関連するすべてのAPIが利用可能です。
-
この状態にある場合、タスク処理サービスは、並列タスクキューから実行可能な状態にあるタスクメッセージを取り出しません。
タスク登録アプリケーションまたはタスク管理アプリケーションは、任意の時点でこの状態を変更することが可能です。
Java¶
Javaで並列タスクキューの状態を変更する場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerクラスのsetParallelizedTaskQueueActiveメソッドを呼び出します。 このメソッドを呼び出すことによってタスク登録アプリケーションはJavaを通じて並列タスクキューの状態を変更します。
サーバサイドJavaScript¶
サーバサイドJavaScriptで並列タスクキューの状態を変更する場合、WorkManagerオブジェクトのsetParallelizedTaskQueueActive関数を呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはサーバサイドJavaScriptを通じて並列タスクキューの状態を変更します。
直列タスクキュー¶
直列タスクキューは直列処理機能を利用する場合にタスクメッセージを登録するタスクキューです。
直列タスクキューの追加¶
直列タスクキューは初期状態では存在しません。 APIを通じて明示的に登録する必要があります。
直列タスクキューは複数登録することが可能であり、キューIDによって識別されます。 キューIDの命名規約は特にありませんが、Javaのパッケージ名と同様にドメイン名を逆順にしたものからはじめることを推奨します。
Java¶
Javaで直列タスクキューを追加する場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerクラスのaddSerializedTaskQueueメソッドを呼び出します。 このメソッドを呼び出すことによってタスク登録アプリケーションはJavaを通じて直列タスクキューを追加します。
TaskManager#addSerializedTaskQueue¶
public static boolean addSerializedTaskQueue(
java.lang.String queueId, boolean active
) throws
jp.co.intra_mart.foundation.asynchronous.TaskControlException
queueIdには直列タスクキューを識別するためのキューIDを指定します。
- キューIDが重複する直列タスクキューを登録することはできません。
- 既に登録済みのキューIDを指定すると、戻り値としてfalseが返されます。 この場合、既存の直列タスクキューには何も反映されません。
activeには直列タスクキューの初期状態を指定します。
このメソッドは戻り値として直列タスクキューの追加が成功したかどうかをboolean型で返します。
- true新しい直列タスクキューが追加された場合、この値が返されます。
- falseシステム上問題がないにも関わらず、新しい直列タスクキューが登録できなかった場合(例:キューIDが重複していた場合など)、戻り値としてこの値が返されます。
サーバサイドJavaScript¶
サーバサイドJavaScriptで直列タスクキューを追加する場合、WorkManagerクラスのaddSerializedTaskQueueメソッドを呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはJavaを通じて直列タスクキューを追加します。
WorkManager#addSerializedTaskQueue¶
function addSerializedTaskQueue(queueId, active)
queueIdには直列タスクキューを識別するためのキューIDを指定します。
- キューIDが重複する直列タスクキューを登録することはできません。
- 既に登録済みのキューIDを指定すると、戻り値としてfalseが返されます。 この場合、既存の直列タスクキューには何も反映されません。
activeには直列タスクキューの初期状態を指定します。
このメソッドは戻り値として直列タスクキューの追加が成功したかどうかをboolean型で返します。
- true新しい直列タスクキューが追加された場合、この値が返されます。
- falseシステム上問題がないにも関わらず、新しい直列タスクキューが登録できなかった場合(例:キューIDが重複していた場合など)、戻り値としてこの値が返されます。
直列タスクキューの削除¶
登録済みの直列タスクキューは削除することが可能です。
直列タスクキューを削除するためには、該当する直列タスクキューが以下の条件をすべて満たしているいる必要があります。
- 現在処理中のタスクが存在しない
- タスクメッセージが存在しない
Java¶
Javaで直列タスクキューを削除する場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerクラスのremoveSerializedTaskQueueメソッドを呼び出します。 このメソッドを呼び出すことによってタスク登録アプリケーションはJavaを通じて直列タスクキューを削除します。
TaskManager#removeSerializedTaskQueue¶
public static boolean removeSerializedTaskQueue(
java.lang.String queueId
) throws
jp.co.intra_mart.foundation.asynchronous.TaskQueueIllegalStateException,
jp.co.intra_mart.foundation.asynchronous.TaskControlException
queueIdには直列タスクキューを識別するためのキューIDを指定します。 存在しないキューIDを指定すると、戻り値としてfalseが返されます。
このメソッドは戻り値として直列タスクキューの削除が成功したかどうかをboolean型で返します。
- true指定された直列タスクキューが削除された場合、この値が返されます。
- falseシステム上問題がないにも関わらず、指定された直列タスクキューが削除できなかった場合(例:キューIDで指定した直列タスクキューが存在しない場合など)、戻り値としてこの値が返されます。
キューIDで指定した直列タスクキューに現在処理中のタスクやタスクメッセージが存在する場合、このメソッドはjp.co.intra_mart.foundation.asynchronous.TaskQueueIllegalStateExceptionを返却します。
サーバサイドJavaScript¶
サーバサイドJavaScriptで直列タスクキューを削除する場合、WorkManagerクラスのremoveSerializedTaskQueueメソッドを呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはJavaを通じて直列タスクキューを削除します。
WorkManager#removeSerializedTaskQueue¶
function removeSerializedTaskQueue(queueId)
queueIdには直列タスクキューを識別するためのキューIDを指定します。 存在しないキューIDを指定すると、戻り値としてfalseが返されます。
このメソッドは戻り値として直列タスクキューの削除が成功したかどうかをboolean型で返します。
- true指定された直列タスクキューが削除された場合、この値が返されます。
- falseシステム上問題がないにも関わらず、指定された直列タスクキューが削除できなかった場合(例:キューIDで指定した直列タスクキューが存在しない場合など)、戻り値としてこの値が返されます。
キューIDで指定した直列タスクキューに現在処理中のタスクやタスクメッセージが存在する場合、この関数の戻り値のerror属性にfalseが設定されます。
タスクメッセージが処理実行可能となる条件¶
タスク処理サービスは直列タスクキューの先頭に存在するタスクメッセージが処理中でない場合のみ取得することが可能です。 タスク処理サービスは直列タスクキューが以下の条件をすべて満たす場合のみ先頭に存在するタスクメッセージを取得することが可能です。
- 直列タスクキューの処理状態が有効状態であること
- 直列タスクキューの先頭に存在するタスクメッセージがどのタスク実行エンジンからも実行されていないこと
直列タスクキューの処理状態については直列タスクキューの処理状態を参照してください。
直列タスクキューの処理状態¶
直列タスクキューの処理状態は以下のいずれかです。
- この状態にある場合、該当する直列タスクキューに関連するすべてのAPIが利用可能です。
- この状態にある場合、タスク処理サービスは、該当する直列タスクキューから実行可能な状態にあるタスクメッセージを取り出しません。
タスク登録アプリケーションまたはタスク管理アプリケーションは、任意の時点でこの状態を変更することが可能です。
Java¶
Javaで直列タスクキューの状態を変更する場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerクラスのsetSerializedTaskQueueActiveメソッドを呼び出します。 このメソッドを呼び出すことによってタスク登録アプリケーションはJavaを通じて直列タスクキューの状態を変更します。
TaskManager#setSerializedTaskQueueActive¶
public static void setSerializedTaskQueueActive(
java.lang.String queueId,
boolean active
) throws
jp.co.intra_mart.foundation.asynchronous.TaskControlException
queueIdには直列タスクキューを識別するためのキューIDを指定します。
activeには直列タスクキューの状態を指定します。
サーバサイドJavaScript¶
サーバサイドJavaScriptで直列タスクキューの状態を変更する場合、WorkManagerオブジェクトのsetSerializedTaskQueueActive関数を呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはサーバサイドJavaScriptを通じて直列タスクキューの状態を変更します。