#ajn3おつかれさまでした!そしてmakeAsyncCallはどうなのか!?

#ajn3おつかれさまでした!!個人的には言いたいことが言えたので満足ですw

appengineを扱うときのmore low levelの位置づけは、
・どのapiが何を実現しているか最小粒度で理解しないと、アーキテクチャとか言う前に、抜け・漏れがあるかもしれないし、本当に実用世界でフォローしていくにはこういう世界も理解していないと簡単にできることに嵌ったりするかも(もちろん、コンテナの特性も大事だけど、個人的にはそっちは追いかけられていない。正直、ひがさんをはじめかなり詳しい人たちが検証作業をしているので、別の世界を見つけた方がいいかも、というのはあるけど。)
・makeSyncCallのレイヤーは楽しいし、ためになる。むしろ、これまで制約として扱ってきたことが制約ではなかった、ということがわかるかも

ということがサマリーです。僕も黒魔導士目指してるわけではないのですよw

資料はこちら:http://balmysundaycandy.googlecode.com/files/%23ajn3.lt.marblejenka.pdf


ところで、本日sdk1.2.8がpreではなく本物リリースになったようです。

preリリースの際、僕はeclipseでは使えないものと思っていたので、がんばってwarをコマンドラインからアップロードしていました。そんな必要はないのと、今日もさんざん話題に上ったのとで試したい人がたくさんいると思うので、かんたんにインストールの仕方を書き残します。

今晩中にeclipse pluginとして環境構築できるようになるかもしれないので、そうでない場合に使ってください。

1. ダウンロード
http://googleappengine.googlecode.com/files/appengine-java-sdk-1.2.8.zip
からzipでおとす。

2. 適当なディレクトリに解凍する

3. eclipse から環境設定→google→App Engineを開く。

4. Addのボタンが見えているはずなので、そいつをクリック

5. 開いたらディレクトリと表示名を指定する。
表示名は、sdk1.2.8とかでいいと思います。

6. 必要に応じてそいつをデフォルトに設定する
これまで使っていたsdk1.2.6はダウンロードできないようになっているようです。デフォルト設定をどうするかは好みと仕事で使っているかに依存すると思います。


確認としては、sdk1.2.8で追加されたAppConfigクラスが見えること、で十分と思います。

このブログを書きながら、shin1ogawaよりさきにmakeAsyncCallをproductionでやるのが僕の責務と思って試してみました。通りましたよ!!


http://sdk-latest.latest.balmysundaycandy.appspot.com/datastore/

#追記。上のurlにアクセスして左下に出てくる値が、asyncCallTimeMills:asyncCallした瞬間制御がアプリケーションにもどるまで、callEndTimeMills:待ち合わせして結果がかえってくるまで(1秒待たせてる)、not done count:制御が戻るまでのループ回数、です。右には戻りpb:QueryResultをtoStringしたものを出しています。もうちょっときれいにしてからデモりたかったのですが、突貫なのでいろいろレイアウトとかあれです。。。

デモ用に書いていたslim3のコードです。

記述はおおむね
http://d.hatena.ne.jp/marblejenka/20091129/1259519548

と同様ですが、

while (!future.isDone()) {

    1. notDoneCount;

}

のループの間にThred.sleepを噛ませないとcpu timeのクオータ制約にかかるようです。とりあえず、1000msでデプロイしています。

1s待たせているので、

asyncCallTimeMills : 3
callEndTimeMills : 1004
not done count : 1

とかいう結果になると思いますが、見る限り200とか重さに応じたms待てば十分forkできるものと思います。

#追記。futureのgetは戻ってくるまで待ってくれるようなので、非同期にいくつかのサービス呼び出しを実行して、必要なタイミングでgetすればwaitしなくてもよいようです。これは、productionでも確認できました。futureのjavadocにかいてあるよ。。

時代はmore low levelですよ!!