最小限のステップで AP4R を動かしてみる

昨日のエントリでは長々と書いてしまったので、もっとシンプルに書いてみます。シェルに入力するコマンドだけ拾ってみました。
AP4R の起動までに 8コマンド(パッチ分を抜けば 5コマンド!)、サンプルアプリの起動までに 5コマンドなので、ちょっと動かしてみる気にもなりやすいかなぁ... (^^;

  • シェルを1つ立ちあげて、AP4R を起動
% cd $home
% ruby -v                     # ruby 1.8.6 ...
% gem -v                      # 0.9.2
% sudo gem install ap4r -y    # ap4r 0.3.0 etc
% sudo vi /usr/local/lib/ruby/gems/1.8/gems/reliable-msg-1.1.0/lib/reliable-msg/queue-manager.rb
                              # modified L236 (drb.merge を drb = drb.merge に修正)
% sudo vi /usr/local/lib/ruby/gems/1.8/gems/reliable-msg-1.1.0/lib/reliable-msg/cli.rb
                              # modified L212 (drb.merge を drb = drb.merge に修正)
% sudo chmod 757 /usr/local/lib/ruby/gems/1.8/gems/uuid-1.0.3
% ap4r_setup my_ap4r
% cd my_ap4r
% ruby script/start -c config/queues_disk.cfg
  • もう1つシェルを立ちあげて、サンプルアプリを起動
% cd $home
% gem list --local rails      # rails 1.2.3 
% curl -O http://rubyforge-files.ruby-forum.com/ap4r/HelloWorld-0.3.0.tar.gz
% tar xvf HelloWorld-0.3.0.tar.gz
% cd HelloWorld
% ruby script/server
  • ブラウザを立ちあげて、以下の URL を実行

なんの変化もないさびしい画面ですが、実行結果がすぐ返ってきます (ぐるぐるまわるのがすぐ終わります)。
それぞれの違いは非同期の処理を呼び出すときのプロトコルです。

http://localhost:3000/sync_hello/execute_via_http
http://localhost:3000/sync_hello/execute_via_soap
http://localhost:3000/sync_hello/execute_via_xmlrpc

  • ファイルへの出力結果を確認

2行目が1行目の10秒後に書き込まれてます。ここが非同期で処理されたとこですね。
いずれの行も Rails 上で動く処理が出力しています。

% cat ~/HelloWorld/HelloWorld.txt
Hello # ...written at Sat Apr 07 01:31:54 +0900 2007
World # ...written at Sat Apr 07 01:32:04 +0900 2007


あ、できましたね♪



  • SAF機能を利用する場合

いったんサンプルアプリを止めて(ctrl+c)、準備を整えてから再び起動します。

% fink install sqlite3
% sudo gem install sqlite3-ruby
% cd ~/HelloWorld
% rake db:migrate
% ruby script/server
  • ブラウザで以下の URL を実行

さきほどと同様の動きに見えますが、いったん SAFテーブルを経由してから後続処理へのメッセージを配信しています。不測の障害時にも安心です。

http://localhost:3000/sync_hello/execute_with_saf

  • 参考

詳しい説明はすっとばしてるので、行間を知りたくなったかたはこちらをご覧ください。

  • kiwamu日記 - ap4r-0.3.0 リリース

http://d.hatena.ne.jp/kiwamu/20070406/1175859018