BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース STOMPを使用したFlex 3.0およびRabbitMQの統合

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

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

この記事に星をつける

おすすめ度
スタイル

BT