HORB Messaging Service 2001.3.2 (2001.6.18 更新) 秋山朋之 日本アドバンス・テクノロジー 平野 聡 電子技術総合研究所 萩本順三 福村真奈美 豆蔵 1.アーキテクチャ HORBのコアには手を加えない。 エクステンションのパッケージ horbx.msgq:無償公開 horby.msgq:有償化の予定 従来の開発スタイルを踏襲 2.メッセージングサービスとは 一つの事象を複数の相手へ確実に同報する。 リモート・オブジェクトの一時停止やダウンに対し キューがメッセージを保持する。 HORBでは3種類用意 Point to Points Publish & Subscribe Atomic Broadcast フォールトトレラントのレベルはリモートオブジェク トとメッセージングサーバの2レベル。 3.プログラミングインターフェース HORBの開発スタイルの踏襲 リモートオブジェクトのメソッド宣言の決まり 返り値はvoid型 メソッド名の最後は‘_MsgQ’ msgqcコンパイラを提供 MsgQServerクラスでリモートオブジェクトを メッセージングサーバへ登録 3.1 受信側のコード例 Receiver void main(); void test_Msgq(int); void main(String[] argv){ // 1.登録用の専用Proxyを初期化 proxy = new horbx.magq.MsgQServer(url); // 2.自分自身の初期化 Receiver receiver = new Receiver(); // 3.メッセージングサーバへ登録 proxy.registerReceiver(queueName, receiver); } void test_Msgq(int value){ : } 3.2 msgqcコンパイラとは 新たに用意したメッセージングサービス専用コンパイラ 受信者側の‘A’クラスから送信者で利用する ‘A’_MsgQProxyクラスを作成する。 但し、メッセージングの内部フレームワークはhorbcを使用し ている。 > つまり、メッセージングサービスは100%HORB >msgqc Receiver.java compiling Receiver.java generating Receiver_MsgQ.java compiling Receiver_MsgQ.java > 3.3 送信側のコード例 Sender void main(String[] argv){ void main(); // 1.MsgQProxyの初期化 Receiver_MsgQProxy proxy = new Receiver_MsgQProxy(url,queueName); // 2.メソッド呼び出し > メッセージ送信 proxy.test_MsgQ(100); : } Receiver_MsgQProxy (msgqcで作成) 3.4 他のメッセージングとの比較 JMS / CORBA Event・Notification Serviceは多 機能な分知らなければならないクラス・インター フェースが膨大。 HORBメッセージングサービスで既存のHORB ユーザが新たに覚える事は最小限 返値はvoid型、メソッド名の最後は‘_MsgQ’ msgqcコンパイラの使用 サーバの登録クラス horbx.msgq.MsgQServer 4.デモンストレーション キューの様子を立体的にモニター 5.ベンチマーク スループット:現状の参考値(チューニング中) ペンティアムⅢ1GHz 二台をネットワーク接続 HORBメッセージングサーバと、もう一台を送信クライアント/受信クライアントとした。 J2SE ver1.3 Windows2000 1000連続メッセージのスループット 結果 永続記憶なし:50msec/message 永続記憶あり:125msec/message 永続記憶のコストは75msec程度 X軸:byte/int/doubleを配列のサイズを10の6乗まで増す。 Y軸:1メッセージ当たりのスループット時間(msec) アプリケーション応用例 ブロードバンド・インターネットビデオ配信サービス 放送局 MessageQueueServer カクケード接続 3億家庭(?)の ビデオサーバ
© Copyright 2025 ExpyDoc