8

Springを使用して長いプロセスを実行するための最良のアプローチは何ですか. 私は webapp を持っています。クライアントがリクエストを行うと、Spring コントローラーが実行されます。このコントローラーは、リクエストからいくつかのパラメーターを取得し、クエリを実行して DB からレコードをフェッチします。

DB からのレコードが多く、時間がかかる可能性がある比較ロジックを実行する必要があるため、個別に実行する必要があります。このプロセスが実行されると、最終結果が Excel ファイルに書き込まれ、メールで送信されます。

4

1 に答える 1

5

注釈@Asyncを使用してすぐに戻ることができます。

まず、@ServiceDB と Excel のジョブを処理するクラスを作成します。

@Service
public class AccountService {
    @Async
    public void executeTask(){
    // DB and Excel job
    }
}

次に、コントローラーメソッドでタスクをトリガーします

@Controller
public class taskController{
    @RequestMapping(value = "as")
    @ResponseBody
    public ResultInfo async() throws Exception{
        accountService.executeTask();
        return new ResultInfo(0, "success", null);
    }
}

最後に、これを application-context.xml (Spring 構成ファイル) に追加します。

<task:annotation-driven executor="taskExecutor"/>
<task:executor id="taskExecutor" pool-size="10"/>

これがあなたを助けることを願っています。

于 2013-08-17T17:36:44.393 に答える