« MySQL のウォームアップ (InnoDB編) | メイン | Re: for 文を setTimeout に変換する »

2007年11月07日

メッセージキュー事始め in Perl - コマンドラインクライアントを作ってみた

 メッセージキューの勉強をかねて STOMP のコマンドラインクライアントを書いてみました。STOMP だから ActiveMQ とも通信可能だろうし、動作確認やテスト用のスタブ作成などに使えるはず。ソースはこちら: stompy

1. メッセージキューを起動 (POE::Component::MessageQueue を使用)

% /usr/bin/mq.pl --data-dir /tmp/mq

2. キューに書き込み

% echo 'hello 1' | ./stompy --destination=/queue/test
% echo 'hello 2' | ./stompy --destination=/queue/test
% echo 'hello 3' | ./stompy --destination=/queue/test

3. キューから読み込み

% ./stompy --subscribe=/queue/test
hello 1
hello 2
hello 3
^C
% 

以下のようなオプションを用意しました。

 % ./stompy --help
Stompy 0.01 - a command line stomp client

./stompy [options]

Options:
  --host=host (default: localhost)
  --port=port (default: 61613)
  --persistent=[0|1] (default: 1)
  --username=user (default: ENV{USER})
  --password=pass (default: empty string)
  --destination=path (destination)
  --subscribe=path (subscription path)
  --escape=exp (egexp for escaping the data received: default: none)
  --help

Either of --destination or --subscribe is mandatory.

% 

 --escape=exp あたりでちょっと遊び。--escape='s/\n/\\n/g; $_ .= "\n"' とかやると、改行を「\n」に変換して、メッセージ間を改行で分割するとか。パイプ読み込み用です。

 POE::Component::MessageQueue および STOMP を使い始めるにあたっては、非同期メッセージングを実現するPOE::Component::MessageQueue を試してみた : no hacking, no life が、とても参考になりました。ありがとうございます。

投稿者 kazuho : 2007年11月07日 16:16 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1634