intra-mart Accel Platform 非同期仕様書 第6版 2021-08-01

キュー管理

タスクキューはタスクメッセージの集合であり、先入れ先出し方式(FIFO: First In, First Out)で管理されています。

  • 登録時、タスクメッセージはタスクキューの最後尾に追加されます。
  • タスクキューに登録されたタスクメッセージは先頭のものから順次取得されます。

タスク管理アプリケーションは各種APIを通じてタスクキューを管理することができます。 タスクキューの管理には以下のような内容が含まれます。

  • タスクキューの停止または起動
  • タスクキューの追加または削除(直列タスクキューの場合のみ)

並列タスクキュー

並列タスクキューは並列処理機能を利用する場合にタスクメッセージを登録するタスクキューです。

並列タスクキューの数

並列タスクキューは非同期処理機能からテナント内に一つのみ提供されます。

並列タスクキューを追加したり削除することは出来ません。

タスクメッセージが処理実行可能となる条件

タスク処理サービスは並列タスクキューの処理状態が有効状態である場合のみ、先頭に存在するタスクメッセージを任意のタイミングで取得することが可能です。 並列タスクキューの処理状態については並列タスクキューの処理状態を参照してください。

並列タスクキューの処理状態

並列タスクキューは以下のいずれかの状態にあります。

  • 有効状態

    この状態にある場合、並列タスクキューに関連するすべてのAPIが利用可能です。

  • 無効状態

    この状態にある場合、タスク処理サービスは、並列タスクキューから実行可能な状態にあるタスクメッセージを取り出しません。

タスク登録アプリケーションまたはタスク管理アプリケーションは、任意の時点でこの状態を変更することが可能です。

Java

Javaで並列タスクキューの状態を変更する場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerクラスのsetParallelizedTaskQueueActiveメソッドを呼び出します。 このメソッドを呼び出すことによってタスク登録アプリケーションはJavaを通じて並列タスクキューの状態を変更します。

TaskManager#setParallelizedTaskQueueActive
public static void setParallelizedTaskQueueActive(
      boolean active
   ) throws
      jp.co.intra_mart.foundation.asynchronous.TaskControlException

activeには並列タスクキューの状態を指定します。

  • true
    並列タスクキューを有効状態にします。
  • false
    並列タスクキューを無効状態にします。

サーバサイドJavaScript

サーバサイドJavaScriptで並列タスクキューの状態を変更する場合、WorkManagerオブジェクトのsetParallelizedTaskQueueActive関数を呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはサーバサイドJavaScriptを通じて並列タスクキューの状態を変更します。

WorkManager#setParallelizedTaskQueueActive
function setParallelizedTaskQueueActive(active)

activeには並列タスクキューの状態を指定します。

  • true
    並列タスクキューを有効状態にします。
  • false
    並列タスクキューを無効状態にします。

直列タスクキュー

直列タスクキューは直列処理機能を利用する場合にタスクメッセージを登録するタスクキューです。

直列タスクキューの追加

直列タスクキューは初期状態では存在しません。 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には直列タスクキューの初期状態を指定します。

  • true
    直列タスクキューを有効状態で初期登録します。
  • false
    直列タスクキューを無効状態で初期登録します。

このメソッドは戻り値として直列タスクキューの追加が成功したかどうかをboolean型で返します。

  • true
    新しい直列タスクキューが追加された場合、この値が返されます。
  • false
    システム上問題がないにも関わらず、新しい直列タスクキューが登録できなかった場合(例:キューIDが重複していた場合など)、戻り値としてこの値が返されます。

サーバサイドJavaScript

サーバサイドJavaScriptで直列タスクキューを追加する場合、WorkManagerクラスのaddSerializedTaskQueueメソッドを呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはJavaを通じて直列タスクキューを追加します。

WorkManager#addSerializedTaskQueue
function addSerializedTaskQueue(queueId, active)

queueIdには直列タスクキューを識別するためのキューIDを指定します。

  • キューIDが重複する直列タスクキューを登録することはできません。
  • 既に登録済みのキューIDを指定すると、戻り値としてfalseが返されます。 この場合、既存の直列タスクキューには何も反映されません。

activeには直列タスクキューの初期状態を指定します。

  • true
    直列タスクキューを有効状態で初期登録します。
  • false
    直列タスクキューを無効状態で初期登録します。

このメソッドは戻り値として直列タスクキューの追加が成功したかどうかを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には直列タスクキューの状態を指定します。

  • true
    直列タスクキューを有効状態にします。
  • false
    直列タスクキューを無効状態にします。

サーバサイドJavaScript

サーバサイドJavaScriptで直列タスクキューの状態を変更する場合、WorkManagerオブジェクトのsetSerializedTaskQueueActive関数を呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはサーバサイドJavaScriptを通じて直列タスクキューの状態を変更します。

WorkManager#setSerializedTaskQueueActive
function setSerializedTaskQueueActive(queueId, active)

queueIdには直列タスクキューを識別するためのキューIDを指定します。

activeには直列タスクキューの状態を指定します。

  • true
    直列タスクキューを有効状態にします。
  • false
    直列タスクキューを無効状態にします。