InfoQ

News

STOMPを使用したFlex 3.0およびRabbitMQの統合

作者 Moxie Zhang, 翻訳者 編集部 投稿日 2008年3月19日 午後12時5分

コミュニティ
Java
トピック
メッセージング,
RIA
タグ
Flex

Derek Wischusen氏はActionScript 3 STOMPクライアント(source)を使用し、RabbitMQ(サイト・英語)をFlex 3アプリケーションと統合する試みをFlex on Railsの投稿記事(source)に紹介した。

RabbitMQは、以下のようなオープンソースエンタープライズメッセージングシステムである。

RabbitMQは、完全かつ非常に信頼できるエンタープライズメッセージングシステムである。RabbitMQのクライアントライブラリーおよびブロー カーデーモンを一緒に使用してAMQPを作成するか、個別に使用してRabbitMQの利点を確立されたネットワークにもたらすことができる。

RabbitMQはAMQP(source)プロトコルの実装で、 メッセージングミドルウェアのオープンスタンダードである。STOMP(source)は、ストリーミングテキストに配向されたメッセージングプロトコルである。 Wischusen氏が試みたことは、RabbitMQでSTOMPアダプター(ブログ・英語)を使用することである。

この試みがどのようなものであるかが理解しやすいように、Wischusen氏が以下のようにリソースおよびソースコードを示した。

    • このチュートリアルのステップに従って、STOMPアダプターでRabbitMQを実行させる(ブログ・英語)
    • Flexアプリケーションのプロジェクトファイルをダウンロードする(Zip・英語)

そして、Wischusen氏はFlexプロジェクトについて説明した。

このプロジェクトは2つの別個のアプリケーションから成っている。ImageSenderおよびImageReceiverである。プロジェクトファイルには3つのSTOMPとしてコンパイルされたライブラリがあるので、別々にダウンロードする必要がない。

ImageSenderおよびImageReceiverアプリケーションは、STOMPプロトコルを通じてRabbitMQを使用し、メッセージングを交換することで通信する。両方のアプリケーションからの Flexコードが、STOMPクライアントとどのように動作するかを例証するために、Wischusen氏はコードスナイプを提示した。

ImageSender

    "stomp"  />
...

private function init () : void
{
var ch: ConnectHeaders = new ConnectHeaders();
ch.login = "guest";
ch.passcode = "guest"
stomp.connect("localhost", 61613, ch);
}
...
private function sendImage():void
{
var image: ByteArray = ImageSnapshot.captureImage(canvas).data;
stomp.send(destination, image);
}

ImageReceiver

"stomp" message="handleMessages(event)"  />
...
private var destination: String = "/queue/images";

private function init () : void
{
var ch: ConnectHeaders = new ConnectHeaders();
ch.login = "guest";
ch.passcode = "guest"
stomp.connect("localhost", 61613, ch);
stomp.subscribe( destination );
}
...

private function handleMessages(event : MessageEvent) : void
{
var bd: BitmapData = new BitmapData(canvas.width, canvas.height);
var loader : flash.display.Loader = new flash.display.Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onBytesLoaded);
loader.loadBytes(event.message.body);
function onBytesLoaded (event : Event) : void
{
var content : DisplayObject = LoaderInfo( event.target ).content;
bd.draw( content );
canvas.graphics.beginBitmapFill(bd);
canvas.graphics.drawRect(0,0, canvas.width, canvas.height);
canvas.graphics.endFill();
}
}

この試みは、Flex application (ImageSender)からのイメージの取り込み方法、RabbitMQサーバへのイメージの送信方法、メッセージングカスタマーアプリケーション(ImageReceiver)へのメッセージの送信方法およびメッセージがイベントをトリガーしてRabbitMQサーバからイメージをロードする方法を例証している。メッセージング配向RIAアプリケーション概念に関する興味深い例証である。

原文はこちらです: http://www.infoq.com/news/2008/03/flex-rabbitmq-stomp

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。

ソフトウェアのリーン思考入門

これは、InfoQ Chinaのアジャイル編集者、Jacky Li氏によるリーン思考とリーン思考をどのようにソフトウェア開発に適用するかについての入門です。

Java 6のスレッド最適化は実際に動作しているのか?

2つのパートからなるこの記事では、シングルスレッドベンチマークの助けを借りて、Java 6のスレッドのパフォーマンスに関する疑問に答える試みをしようと思います。

平鍋氏のGordon Pask Award受賞スピーチ

Agile2008において、Gordon Pask Awardの授与式が行われ、その一人として、チェンジビジョンの平鍋氏が受賞しました。本賞は、毎年、アジャイルコミュニティで定評のあるリーダーだけではなく、新たなリーダーになる可能性のある者に贈られるものです。InfoQでは、授与式のスピーチを動画にてお送りします。

Linda Rising氏による「誰を信頼しますか?」

Agile2008の3日目、8/6(水)午前中の、Linda Risingによるセッションです。セッションの冒頭、Linda Risingはとてもゆったりとしたきれいな、わかりやすい英語で話し始めました。

Jean Tabaka氏による「Collaboration Explained--真のアジャイルチームのためのファシリテーションツール」

Jean Tabaka氏の書いた書籍では、会議などのチーム活動において、ファシリテーションの手法とツールについて具体的かつ実践的に説明しています。8/8(金)、Agile2008の最終日の朝のセッションでは、Jean Tabaka氏自身が本の内容をベースとしたセッションを行いました。

Hubert Smits氏による「ゲーム・デザイン・ワークショップ」

Agile2008の4日目となる8/6(木)の8:30から、Hubert Smits氏による「ゲーム・デザイン・ワークショップ」がおこなわれました。ゲームと言っても単なる遊びではなく、「フレームゲーム」と呼ばれる、グループでの情報収集や意志決定、また教育やトレーニングの教材として使えるいろいろなゲームです。

スケーラビリティに関するベストプラクティス:eBayからの教訓

eBayが日々挑んでいる主要なアーキテクチャの勢力は、スケーラビリティです。これはアーキテクチャや設計に関するあらゆる意思決定を特徴づけたり、駆り立てたりします。