google appengine / javaの話ですけど。

バッチとかならcron で何とかなるもんだからいままで曖昧にしてきた訳ですが、そろそろ TaskQueue を弄っていこうと思います。

知らんかった事その1

タスクとははURLを持ったただのサーブレット

使い方というか、Queueの登録の仕方はコチラは大いに参考にさせて頂いています。これ以上説明することがありません。

Task Queueの最新情報!【設定ファイル例付き】

知らんかった事その2

TaskQueue用のサーブレットってSlim3のControllerでもいけるし、素のServletでもいけるけど、戻り値はnullじゃないと延々とリトライされる。

(Exceptionをthrowしてもリトライされる。逆に言うとExceptionをcatchしてしまうとリトライされない)

それもあるから、Datastoreに書いたりするならべき等に実装しなきゃいかん。

知らんかった事その3

リトライに関してはqueue.xml でかなり細かく設定できる。

今は昔のkonjak翻訳 φ(・ω・? )…: Java Task Queue Configuration

色々出来そうですね。

がんばってみます。

個人的には .countDownMills(long) が便利だと思う。

5秒後に実行ならcountDownMills(5000L)。

Taskは(ある程度)細かいほどパフォーマンスいいみたい。

例えばどうしてもループの中にDatastore操作が入っちゃうみたいな場合は、TaskQueueの出番かな。

私が知らないだけかもしれませんがちょっと残念なのは、TaskのChainが作れない事です。

Aタスクを実行後Bタスクとかする場合は、Aタスクの中でBタスクを呼び出す様にネストせな仕方ないか。

Twitterボットでも作ってみようかな。