パッケージ org.iplass.mtp.async

インタフェース AsyncTaskManager

すべてのスーパーインタフェース:
Manager

public interface AsyncTaskManager extends Manager
非同期実行を管理するManager。 非同期処理は、ローカルスレッド実行指定されない限り、一旦永続Storeに保存される。 そのため、ローカルスレッド実行でないtaskはSerializbleを実装する必要がある。 また、taskが実行結果を返す場合はその実行結果もSerializbleを実装する必要がある。
  • メソッドの詳細

    • executeOnThread

      <V> Future<V> executeOnThread(Callable<V> task)
      ローカルスレッドでタスクを非同期実行する。
      ローカルスレッド実行では以下の制約がある。
      • トランザクション管理対象外:呼び出し元がロールバックしても、非同期処理が継続
      • getResult(long, String)による問い合わせ不可
      • リトライ、タイムアウトなどの制御なし
      パラメータ:
      task - 非同期実行する処理
      戻り値:
      実行結果を表すFuture
    • execute

      <V> AsyncTaskFuture<V> execute(Callable<V> task)
      デフォルトの実行オプション設定にて指定のtaskを非同期実行する。 デフォルトの設定はAsyncTaskOptionを参照のこと。
      パラメータ:
      task - 非同期実行する処理
      戻り値:
      実行結果を表すAsyncTaskFuture
    • execute

      <V> AsyncTaskFuture<V> execute(AsyncTaskOption option, Callable<V> task)
      指定の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

      <V> AsyncTaskFuture<V> getResult(long taskId, String queueName)
      指定のtaskId,queueNameで特定される非同期タスクの実行結果を問い合わせる。
      パラメータ:
      taskId -
      queueName - キュー名、nullの場合はデフォルトキュー指定されたとみなす
      戻り値:
      実行結果を表すAsyncTaskFuture
    • loadAsyncTaskInfo

      AsyncTaskInfo loadAsyncTaskInfo(long taskId, String queueName)
      AsyncTaskInfoの詳細を取得する。 task、およびresultもロードする。
      パラメータ:
      taskId -
      queueName - キュー名、nullの場合はデフォルトキュー指定されたとみなす
      戻り値:
    • searchAsyncTaskInfo

      List<AsyncTaskInfo> searchAsyncTaskInfo(AsyncTaskInfoSearchCondtion cond)
      永続Storeに保存されている(ローカルスレッド実行でない)非同期タスクの情報を取得する。 このメソッドを利用して返却されるAsyncTaskInfoには、taskおよび、resultは含まれない(メモリ負荷を考慮し)。 これらを取得する場合は、別途loadAsyncTaskInfo(long, String)を利用する。
      パラメータ:
      cond -
      戻り値:
    • forceDelete

      void forceDelete(long taskId, String queueName)
      AsyncTaskInfoを強制削除する。
      パラメータ:
      taskId -
      queueName - キュー名、nullの場合はデフォルトキュー指定されたとみなす