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

状態管理

非同期処理機能には、以下の状況を確認する機能があります。

  • 並列処理機能
    • 並列タスクキューの活性化状態
    • 並列タスクキューで待機中のタスクメッセージ
    • 並列タスクキューで処理実行中のタスク
    • 並列タスクキューでエラー終了のタスク
  • 直列処理機能
    • 直列タスクキューの一覧
    • 直列タスクキューの活性化状態
    • 直列タスクキューで待機中のタスクメッセージ
    • 直列タスクキューで処理実行中のタスク
    • 直列タスクキューでエラー終了のタスク

コラム

エラー終了のタスクに関連する機能はintra-mart Accel Platform 2021 Summer(Cattleya)以降のバージョンで利用可能です。

Java

Javaを利用して非同期処理機能の現在の状況を取得するためには、jp.co.intra_mart.foundation.asynchronous.TaskManagergetRegisteredInfoメソッドを利用します。

public static jp.co.intra_mart.foundation.asynchronous.report.RegisteredInfo
   getRegisteredInfo()
   throws
      jp.co.intra_mart.foundation.asynchronous.TaskControlException

戻り値のRegisteredInfoには、現在の非同期処理機能の状況のスナップショットが戻されます。

RegisteredInfo

jp.co.intra_mart.foundation.asynchronous.report.RegisteredInfoインタフェースには以下のようなメソッドが用意されています。

public abstract RegisteredParallelizedTaskQueueInfo getParallelizedTaskQueueInfo();

java.util.Map<java.lang.String, RegisteredSerializedTaskQueueInfo>
   getSerializedTaskQueuesInfo();
  • getParallelizedTaskQueueInfo()メソッドは並列タスクキューの情報を取得できます。
  • getSerializedTaskQueuesInfoメソッドは、登録されているすべての直列タスクキューの情報を取得できます。このメソッドの戻り値はキューIDをキーに、キューIDに該当する直列タスクキューを値とするjava.util.Mapです。

RegisteredParallelizedTaskQueueInfo

jp.co.intra_mart.foundation.asynchronous.report.RegisteredParallelizedTaskQueueInfoインタフェースには以下のようなメソッドが用意されています。

RegisteredParallelizedTaskQueueInfo#isActive

boolean isActive();

並列タスクキューの現在の状態(有効状態または無効状態)を取得します。

コラム

intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、jp.co.intra_mart.foundation.asynchronous.TaskManagergetParallelizedTaskQueuesStatus()メソッドを利用しても、取得できます。

RegisteredParallelizedTaskQueueInfo#getWaitingTasksInfo

java.util.List<RegisteredParallelizedTaskInfo> getWaitingTasksInfo();

並列タスクキューに登録後、現在処理待機中となっているタスクの一覧情報を取得できます。

並列タスクキューに登録されているタスクの順序が反映されます。

コラム

intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理待機中となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetParallelizedTaskQueuesStatus()メソッドを利用して取得できます。

RegisteredParallelizedTaskQueueInfo#getRunningTasksInfo

java.util.Set<RegisteredParallelizedTaskInfo> getRunningTasksInfo();

並列タスクキューに登録後、現在処理実行中状態となっているタスクの一覧情報を取得できます。 タスクの順序は不定です。

コラム

intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理実行中状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetParallelizedTaskQueuesStatus()メソッドを利用して取得できます。

RegisteredParallelizedTaskQueueInfo#getErroredTasksInfo

java.util.Set<RegisteredParallelizedTaskInfo> getErroredTasksInfo();

並列タスクキューに登録後、現在エラー終了状態となっているタスクの一覧情報を取得できます。 タスクの順序は不定です。

コラム

このメソッドはintra-mart Accel Platform 2021 Summer(Cattleya)以降のバージョンで利用可能です。

intra-mart Accel Platform 2021 Summer(Cattleya) 以降をご利用の場合、現在エラー終了状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetParallelizedTaskQueuesStatus()メソッドを利用して取得できます。

RegisteredParallelizedTaskInfo

jp.co.intra_mart.foundation.asynchronous.report.RegisteredParallelizedTaskInfoインタフェースには以下のようなメソッドが用意されています。

RegisteredParallelizedTaskInfo#getMessageId

java.lang.String getMessageId();

登録されているタスクメッセージまたはタスクのメッセージIDを取得します。

メッセージIDはタスクメッセージ登録時に非同期処理機能から返される一意の値です。

RegisteredParallelizedTaskInfo#getSentTimeInMillis / getSentTime

long getSentTimeInMillis();

java.util.Calendar getSentTime();

送信日時を取得します。

送信日時とは、タスクメッセージを登録するためのAPIを呼び出した日時です。

RegisteredParallelizedTaskInfo#getReceivedTimeInMillis / getReceivedTime

long getReceivedTimeInMillis();

java.util.Calendar getReceivedTime();

受信日時を取得します。

受信日時とは、非同期処理機能が実際に並列タスクキューにタスクメッセージを登録した日時であり、送信日時とは異なる場合があります。

RegisteredParallelizedTaskInfo#getTaskClassName

java.lang.String getTaskClassName();

タスクのクラス名を取得します。

登録時にサーバサイドJavaScriptのAPIを使用した場合、この値は不定です。

RegisteredParallelizedTaskInfo#getNode

java.lang.String getNode();

タスクのビジネスロジックが現在実行されているノード名を取得します。

タスクが実行中でない場合、このメソッドはnullを返します。

RegisteredParallelizedTaskInfo#getAcceptTimeInMillis / getAcceptTime

long getAcceptTimeInMillis();

java.util.Calendar getAcceptTime();

タスクが受け付けられ処理実行可能状態になった日時を取得します。

タスクがまだ受け付けられていない場合、getAcceptTimeInMillis()メソッドはRegisteredTaskInfo.UNALLOCATED_TIMESTAMPを、getAcceptTime()メソッドはnullを返します。

RegisteredParallelizedTaskInfo#getStartTimeInMillis / getStartTime

long getStartTimeInMillis();

java.util.Calendar getStartTime();

タスクのビジネスロジックが開始され処理実行中状態になった日時を取得します。

タスクがまだ受け付けられていない場合、getStartTimeInMillis()メソッドはRegisteredTaskInfo.UNALLOCATED_TIMESTAMPを、getStartTime()メソッドはnullを返します。

RegisteredSerializedTaskQueueInfo

jp.co.intra_mart.foundation.asynchronous.report.RegisteredSerializedTaskQueueInfoインタフェースには以下のようなメソッドが用意されています。

RegisteredSerializedTaskQueueInfo#isActive

boolean isActive();

直列タスクキューの現在の状態(有効状態または無効状態)を取得します。

コラム

intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、jp.co.intra_mart.foundation.asynchronous.TaskManagergetSerializedTaskQueuesStatusById(java.lang.String)メソッドを利用しても、取得できます。

すべての直列タスクキューの状態情報は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetAllSerializedTaskQueuesStatus()メソッドを利用して取得できます。

RegisteredSerializedTaskQueueInfo#getQueueId

String getQueueId();

直列タスクキューのキューIDを取得します。

コラム

intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、jp.co.intra_mart.foundation.asynchronous.TaskManagergetAllSerializedTaskQueuesStatus()メソッドを利用しても、取得できます。

RegisteredSerializedTaskQueueInfo#getWaitingTasksInfo

java.util.List<RegisteredSerializedTaskInfo> getWaitingTasksInfo();

直列タスクキューに登録後、現在処理待機中となっているタスクの一覧情報を取得できます。

直列タスクキューに登録されているタスクの順序が反映されます。

コラム

intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理待機中となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetSerializedTaskQueuesStatusById(java.lang.String)メソッドを利用して取得できます。

すべての直列タスクキューの処理待機中となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetAllSerializedTaskQueuesStatus()メソッドを利用して取得できます。

RegisteredSerializedTaskQueueInfo#getRunningTasksInfo

RegisteredSerializedTaskInfo getRunningTaskInfo();

直列タスクキューに登録後、現在処理実行中状態となっているタスクを取得できます。

直列タスクキューに処理実行中状態となっているタスクが存在しない場合、nullが返されます。

コラム

intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理実行中状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetSerializedTaskQueuesStatusById(java.lang.String)メソッドを利用して取得できます。

すべての直列タスクキューの処理実行中状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetAllSerializedTaskQueuesStatus()メソッドを利用して取得できます。

RegisteredSerializedTaskQueueInfo#getErroredTasksInfo

java.util.Set<RegisteredSerializedTaskInfo> getErroredTasksInfo();

直列タスクキューに登録後、現在エラー終了状態となっているタスクの一覧情報を取得できます。

直列タスクキューにエラー終了状態となっているタスクが存在しない場合、nullが返されます。

タスクの順序は不定です。

コラム

このメソッドはintra-mart Accel Platform 2021 Summer(Cattleya)以降のバージョンで利用可能です。

intra-mart Accel Platform 2021 Summer(Cattleya) 以降をご利用の場合、現在エラー終了状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetSerializedTaskQueuesStatusById(java.lang.String)メソッドを利用して取得できます。

すべての直列タスクキューの現在エラー終了状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagergetAllSerializedTaskQueuesStatus()メソッドを利用して取得できます。

RegisteredSerializedTaskInfo

jp.co.intra_mart.foundation.asynchronous.report.RegisteredSerializedTaskInfoインタフェースには以下のようなメソッドが用意されています。

RegisteredSerializedTaskInfo#getQueueId

java.lang.String getQueueId();

直列タスクキューのキューIDを取得します。

RegisteredSerializedTaskInfo#isStoppingProgressOnError

boolean isStoppingProgressOnError();

実行したタスクのビジネスロジックで例外が発生した場合、直列タスクキューを停止するかどうかを取得します。

  • true

    例外発生時には直列タスクキューを現在の状態に関わらず無効状態にし、後続のタスクの処理を停止します。

  • false

    例外発生時であっても直列タスクキューの状態を変更しません。

RegisteredSerializedTaskInfo#getMessageId

java.lang.String getMessageId();

登録されているタスクメッセージまたはタスクのメッセージIDを取得します。

メッセージIDはタスクメッセージ登録時に非同期処理機能から返される一意の値です。

RegisteredSerializedTaskInfo#getSentTimeInMillis / getSentTime

long getSentTimeInMillis();

java.util.Calendar getSentTime();

送信日時を取得します。

送信日時とは、タスクメッセージを登録するためのAPIを呼び出した日時です。

RegisteredSerializedTaskInfo#getReceivedTimeInMillis / getReceivedTime

long getReceivedTimeInMillis();

java.util.Calendar getReceivedTime();

受信日時を取得します。

受信日時とは、非同期処理機能が実際に直列タスクキューにタスクメッセージを登録した日時であり、送信日時とは異なる場合があります。

RegisteredSerializedTaskInfo#getTaskClassName

java.lang.String getTaskClassName();

タスクのクラス名を取得します。

登録時にサーバサイドJavaScriptのAPIを使用した場合、この値は不定です。

RegisteredSerializedTaskInfo#getNode

java.lang.String getNode();

タスクのビジネスロジックが現在実行されているノード名を取得します。

タスクが実行中でない場合、このメソッドはnullを返します。

RegisteredSerializedTaskInfo#getAcceptTimeInMillis / getAcceptTime

long getAcceptTimeInMillis();

java.util.Calendar getAcceptTime();

タスクが受け付けられ処理実行可能状態になった日時を取得します。

タスクがまだ受け付けられていない場合、getAcceptTimeInMillis()メソッドはRegisteredTaskInfo.UNALLOCATED_TIMESTAMPを、getAcceptTime()メソッドはnullを返します。

RegisteredSerializedTaskInfo#getStartTimeInMillis / getStartTime

long getStartTimeInMillis();

java.util.Calendar getStartTime();

タスクのビジネスロジックが開始され処理実行中状態になった日時を取得します。

タスクがまだ受け付けられていない場合、getStartTimeInMillis()メソッドはRegisteredTaskInfo.UNALLOCATED_TIMESTAMPを、getStartTime()メソッドはnullを返します。

サーバサイドJavaScript

サーバサイドJavaScriptを利用して非同期処理機能の現在の状況を取得するためには、WorkManagerオブジェクトのgetRegisteredInfo関数を利用します。

function getRegisteredInfo()

この関数の呼び出しが成功した場合、以下のような構造のオブジェクトが戻り値として返されます。

  • error - false

  • data - 非同期処理機能の現在の状況のスナップショット

    • parallelizedTasksInfo - 並列タスクキュー

      • isActive - 並列タスクキューの処理状況です。

        説明
        true 有効状態
        false 無効状態
      • waitingTasks - 並列タスクキューで受付待機状態のタスクメッセージの配列です。順序は並列タスクキューに登録されている内容と同じです。

        配列内の各要素は、以下の構成を持つオブジェクトです。

        • messageId - メッセージID
        • sentTime - 送信日時
        • receivedTime - 受信日時
        • taskClassName - タスク実行クラス名
      • runningTasks - 並列タスクキューで受付待機状態以外のタスクメッセージの配列です。順序は不定です。

        • messageId - メッセージID
        • sentTime - 送信日時
        • receivedTime - 受信日時
        • taskClassName - タスク実行クラス名
        • node - タスクが実行されているノードのノードID
        • acceptTime - タスクが受け付けられ、処理実行可能状態となった時の日時
        • startTime - タスクが開始され、処理実行中状態となった時の日時(まだ開始されていない場合はnull
      • erroredTasks - エラー終了状態となっているタスクメッセージの配列です。順序は不定です。
        intra-mart Accel Platform 2021 Summer(Cattleya)以降のバージョンで利用可能です。
        • messageId - メッセージID
        • sentTime - 送信日時
        • receivedTime - 受信日時
        • taskClassName - タスク実行クラス名
        • node - タスクが実行されたノードのノードID
        • parameter - タスクが実行された時に渡されたパラメータ
        • acceptTime - タスクが受け付けられ、処理実行可能状態となった時の日時
        • startTime - タスクが開始され、処理実行中状態となった時の日時
    • serializedTasksInfo - 直列タスクキューの処理状況です。キューIDをkey、直列タスクキューの情報をvalueとする連想配列です。

      直列タスクキューの情報は以下の情報から構成されています。

      • queueId - キューID

      • isActive - 直列タスクキューの処理状況です。

        説明
        true 有効状態
        false 無効状態
      • waitingTasks - 直列タスクキューで受付待機状態のタスクメッセージの配列です。順序は直列タスクキューに登録されている内容と同じです。

        配列内の各要素は以下の構成を持つオブジェクトです。

        • queueId - キューID

        • isStoppingProgressOnError - タスクのビジネスロジック実行時に例外が発生した場合、直列タスクキューを無効状態にするかどうかを示すフラグです。

          説明
          true 例外発生時には直列タスクキューを停止(無効状態)します。
          false 例外発生時であっても直列タスクキューの状態を変更しません。
        • messageId - メッセージID

        • sentTime - 送信日時

        • receivedTime - 受信日時

        • taskClassName - タスク実行クラス名

      • runningTask - 直列タスクキューで受付待機状態以外のタスクメッセージの配列です。順序は不定です。

        • queueId - キューID

        • isStoppingProgressOnError - タスクのビジネスロジック実行時に例外が発生した場合、直列タスクキューを無効状態にするかどうかを示すフラグです。

          説明
          true 例外発生時には直列タスクキューを停止(無効状態)します。
          false 例外発生時であっても直列タスクキューの状態を変更しません。
        • messageId - メッセージID

        • sentTime - 送信日時

        • receivedTime - 受信日時

        • taskClassName - タスク実行クラス名

        • node - タスクが実行されているノードのノードID

        • acceptTime - タスクが受け付けられ、処理実行可能状態となった時の日時

        • startTime - タスクが開始され、処理実行中状態となった時の日時(まだ開始されていない場合はnull

      • erroredTasks - エラー終了状態となっているタスクメッセージの配列です。順序は不定です。
        intra-mart Accel Platform 2021 Summer(Cattleya)以降のバージョンで利用可能です。

        配列内の各要素は以下の構成を持つオブジェクトです。

        • queueId - キューID

        • isStoppingProgressOnError - タスクのビジネスロジック実行時に例外が発生した場合、直列タスクキューを無効状態にするかどうかを示すフラグです。

          説明
          true 例外発生時には直列タスクキューを停止(無効状態)します。
          false 例外発生時であっても直列タスクキューの状態を変更しません。
        • messageId - メッセージID

        • sentTime - 送信日時

        • receivedTime - 受信日時

        • taskClassName - タスク実行クラス名

        • node - タスクが実行されたノードのノードID

        • parameter - タスクが実行された時に渡されたパラメータ

        • acceptTime - タスクが受け付けられ、処理実行可能状態となった時の日時

        • startTime - タスクが開始され、処理実行中状態となった時の日時

コラム

非同期処理管理画面を利用することによって現在の状態を確認できます。

詳細についてはシステム管理者 操作ガイドの非同期-タスクキュー一覧を参照してください。