2010年12月18日土曜日

[Scala]spawnを利用した非同期updateのコード

前回の記事で書いた課題を解決するために非同期updateの仕組みを追加。

どんな時に使うのか

  • その場で結果を利用しないupdate
  • できるだけ早くレスポンスを返したい場合
  • キャッシュ更新やインデックスの再構成とか

コード

scala.concurrent.ops.spawnで包めば別スレッドで処理してくれるのでそれだけ。本格的にやるならメッセージキュー使ったほうがいいんだろうけど、今のところそんなに負荷高まる予定もないので、、、
ただエラー時のロギングは追加した方がいい気はする。
scala.concurrent.ops.spawn{
mCtReaction.update(("world.id",world.id.toLong),("$addToSet" -> ("subscribers"->user.id.toLong)),Multi)
}

使ってるところ

前回記事の機能で、購読/購読解除のボタンを押した際に既存記事の購読者情報を置き換える部分。ここはボタンを押した瞬間には意味がないので数秒遅くなってもあまり影響が無い。
あとはプロフィールを更新した際にキャッシュを更新する部分にも入れる予定。

0 件のコメント:

コメントを投稿