google appengine / javaの話ですけど。
バッチとかならcron で何とかなるもんだからいままで曖昧にしてきた訳ですが、そろそろ TaskQueue を弄っていこうと思います。
知らんかった事その1
タスクとははURLを持ったただのサーブレット
使い方というか、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ボットでも作ってみようかな。