状態管理¶
非同期処理機能には、以下の状況を確認する機能があります。
- 並列処理機能
- 並列タスクキューの活性化状態
- 並列タスクキューで待機中のタスクメッセージ
- 並列タスクキューで処理実行中のタスク
- 直列処理機能
- 直列タスクキューの一覧
- 直列タスクキューの活性化状態
- 直列タスクキューで待機中のタスクメッセージ
- 直列タスクキューで処理実行中のタスク
Java¶
Javaを利用して非同期処理機能の現在の状況を取得するためには、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetRegisteredInfoメソッドを利用します。
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.TaskManagerのgetParallelizedTaskQueuesStatus()メソッドを利用しても、取得できます。
RegisteredParallelizedTaskQueueInfo#getWaitingTasksInfo¶
java.util.List<RegisteredParallelizedTaskInfo> getWaitingTasksInfo();
並列タスクキューに登録後、現在処理待機中となっているタスクの一覧情報を取得することができます。
並列タスクキューに登録されているタスクの順序が反映されます。
コラム
intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理待機中となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetParallelizedTaskQueuesStatus()メソッドを利用して取得できます。
RegisteredParallelizedTaskQueueInfo#getRunningTasksInfo¶
java.util.Set<RegisteredParallelizedTaskInfo> getRunningTasksInfo();
並列タスクキューに登録後、現在処理実行中状態となっているタスクの一覧情報を取得することができます。 タスクの順序は不定です。
コラム
intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理実行中状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetParallelizedTaskQueuesStatus()メソッドを利用して取得できます。
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を返します。
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.TaskManagerのgetSerializedTaskQueuesStatusById(java.lang.String)メソッドを利用しても、取得できます。
すべての直列タスクキューの状態情報は、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetAllSerializedTaskQueuesStatus()メソッドを利用して取得できます。
RegisteredSerializedTaskQueueInfo#getQueueId¶
String getQueueId();
直列タスクキューのキューIDを取得します。
コラム
intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetAllSerializedTaskQueuesStatus()メソッドを利用しても、取得できます。
RegisteredSerializedTaskQueueInfo#getWaitingTasksInfo¶
java.util.List<RegisteredSerializedTaskInfo> getWaitingTasksInfo();
直列タスクキューに登録後、現在処理待機中となっているタスクの一覧情報を取得することができます。
直列タスクキューに登録されているタスクの順序が反映されます。
コラム
intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理待機中となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetSerializedTaskQueuesStatusById(java.lang.String)メソッドを利用して取得できます。
すべての直列タスクキューの処理待機中となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetAllSerializedTaskQueuesStatus()メソッドを利用して取得できます。
RegisteredSerializedTaskQueueInfo#getRunningTasksInfo¶
RegisteredSerializedTaskInfo getRunningTaskInfo();
直列タスクキューに登録後、現在処理実行中状態となっているタスクを取得することができます。
直列タスクキューに処理実行中状態となっているタスクが存在しない場合、nullが返されます。
コラム
intra-mart Accel Platform 2017 Summer(Quadra) 以降をご利用の場合、現在処理実行中状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetSerializedTaskQueuesStatusById(java.lang.String)メソッドを利用して取得できます。
すべての直列タスクキューの処理実行中状態となっているタスクの件数は、jp.co.intra_mart.foundation.asynchronous.TaskManagerのgetAllSerializedTaskQueuesStatus()メソッドを利用して取得できます。
RegisteredSerializedTaskInfo¶
jp.co.intra_mart.foundation.asynchronous.report.RegisteredSerializedTaskInfoインタフェースには以下のようなメソッドが用意されています。
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を返します。
サーバサイドJavaScript¶
サーバサイドJavaScriptを利用して非同期処理機能の現在の状況を取得するためには、WorkManagerオブジェクトのgetRegisteredInfo関数を利用します。
function getRegisteredInfo()
この関数の呼び出しが成功した場合、以下のような構造のオブジェクトが戻り値として返されます。
error - false
data - 非同期処理機能の現在の状況のスナップショット
parallelizedTasksInfo - 並列タスクキュー
serializedTasksInfo - 直列タスクキューの処理状況です。キューIDをkey、直列タスクキューの情報をvalueとする連想配列です。
直列タスクキューの情報は以下の情報から構成されています。
queueId - キューID
isActive - 直列タスクキューの処理状況です。
値 説明 true 有効状態 false 無効状態 waitingTasks - 直列タスクキューで受付待機状態のタスクメッセージの配列です。順序は直列タスクキューに登録されている内容と同じです。
配列内の各要素は以下の構成を持つオブジェクトです。
runningTask - 直列タスクキューで受付待機状態以外のタスクメッセージの配列です。順序は不定です。
queueId - キューID
isStoppingProgressOnError - タスクのビジネスロジック実行時に例外が発生した場合、直列タスクキューを無効状態にするかどうかを示すフラグです。
値 説明 true 例外発生時には直列タスクキューを停止(無効状態)します。 false 例外発生時であっても直列タスクキューの状態を変更しません。 messageId - メッセージID
sentTime - 送信日時
receivedTime - 受信日時
taskClassName - タスク実行クラス名
node - タスクが実行されているノードのノードID
acceptTime - タスクが受け付けられ、処理実行可能状態となった時の日時
startTime - タスクが開始され、処理実行中状態となった時の日時(まだ開始されていない場合はnull)