パッケージ org.iplass.mtp.async
インタフェース AsyncTaskManager
- すべてのスーパーインタフェース:
Manager
非同期実行を管理するManager。
非同期処理は、ローカルスレッド実行指定されない限り、一旦永続Storeに保存される。
そのため、ローカルスレッド実行でないtaskはSerializbleを実装する必要がある。
また、taskが実行結果を返す場合はその実行結果もSerializbleを実装する必要がある。
-
メソッドの概要
修飾子とタイプメソッド説明<V> AsyncTaskFuture<V>
デフォルトの実行オプション設定にて指定のtaskを非同期実行する。<V> AsyncTaskFuture<V>
execute
(AsyncTaskOption option, Callable<V> task) 指定のtask, optionで表現される非同期タスクを実行する。<V> Future<V>
executeOnThread
(Callable<V> task) ローカルスレッドでタスクを非同期実行する。void
forceDelete
(long taskId, String queueName) AsyncTaskInfoを強制削除する。<V> AsyncTaskFuture<V>
指定のtaskId,queueNameで特定される非同期タスクの実行結果を問い合わせる。loadAsyncTaskInfo
(long taskId, String queueName) AsyncTaskInfoの詳細を取得する。永続Storeに保存されている(ローカルスレッド実行でない)非同期タスクの情報を取得する。
-
メソッドの詳細
-
executeOnThread
ローカルスレッドでタスクを非同期実行する。
ローカルスレッド実行では以下の制約がある。
- トランザクション管理対象外:呼び出し元がロールバックしても、非同期処理が継続
getResult(long, String)
による問い合わせ不可- リトライ、タイムアウトなどの制御なし
- パラメータ:
task
- 非同期実行する処理- 戻り値:
- 実行結果を表すFuture
-
execute
デフォルトの実行オプション設定にて指定のtaskを非同期実行する。 デフォルトの設定はAsyncTaskOption
を参照のこと。- パラメータ:
task
- 非同期実行する処理- 戻り値:
- 実行結果を表すAsyncTaskFuture
-
execute
指定のtask, optionで表現される非同期タスクを実行する。
ローカルスレッド実行指定(executeOnThread(Callable)
or optionのキュー名にAsyncTaskManager#LOCAL_THREAD_QUEUE_NAME
指定)されない限り、 taskおよび、型VはSerializableを実装する必要がある。
また、ロカールスレッド実行ではない場合、 このメソッドの結果として返される、AsyncTaskFuture
のインスタンスの扱いは注意が必要。 ロカールスレッド実行に比較して、キューを介したタスクの処理には比較的処理時間がかかるため、 また、StartMode.AFTER_COMMIT
の場合、 呼び出すスレッドのトランザクションが完了するまで非同期タスクの実行が開始されないため、AsyncTaskFuture.get()
の呼び出しはタイムアウトする可能性が高い。 別のタイミングで、getResult(long, String)
を呼び出し、結果を取得すること。- パラメータ:
option
- 非同期タスク実行オプションtask
- 非同期実行する処理- 戻り値:
- 実行結果を表すAsyncTaskFuture
-
getResult
指定のtaskId,queueNameで特定される非同期タスクの実行結果を問い合わせる。- パラメータ:
taskId
-queueName
- キュー名、nullの場合はデフォルトキュー指定されたとみなす- 戻り値:
- 実行結果を表すAsyncTaskFuture
-
loadAsyncTaskInfo
AsyncTaskInfoの詳細を取得する。 task、およびresultもロードする。- パラメータ:
taskId
-queueName
- キュー名、nullの場合はデフォルトキュー指定されたとみなす- 戻り値:
-
searchAsyncTaskInfo
永続Storeに保存されている(ローカルスレッド実行でない)非同期タスクの情報を取得する。 このメソッドを利用して返却されるAsyncTaskInfoには、taskおよび、resultは含まれない(メモリ負荷を考慮し)。 これらを取得する場合は、別途loadAsyncTaskInfo(long, String)
を利用する。- パラメータ:
cond
-- 戻り値:
-
forceDelete
AsyncTaskInfoを強制削除する。- パラメータ:
taskId
-queueName
- キュー名、nullの場合はデフォルトキュー指定されたとみなす
-