memcachedプロトコルを使った非同期通知サーバー
- アプリケーションA:keyXをgetする
- アプリケーションA:getが待たされる
- アプリケーションB:keyXにvalueXをセットする
- アプリケーションA:getが帰り、valueXを取得できる
このように非同期に通知する機構をmemcachedプロトコルを使って汎用的に利用することができます。
インストール
ソースコードはCodeReposにあります:lang/ruby/lkserver
$ svn co http://svn.coderepos.org/share/lang/ruby/lkserver $ cd lkserver # memcachedテキストプロトコルのパーサーをコンパイル $ ruby extconf.rb $ make # Rev(イベント駆動IOライブラリ)をインストール $ gem install rev # 11511/tcpで起動 $ ruby lkserver.rb 11511
使い方
- 通知を待つ
- memcachedのgetコマンドで通知待ちができます。keyがsetされるまでブロックします。get_multiには対応していません。
- 通知する
- memcachedのsetコマンドで値を通知できます。flagsとexpire timeは必ず0にしてください。
- 通知待ちを中断させる
- memcachedのdeleteコマンドで通知待ちを中断できます。expire timeは必ず0にしてください。