NettyライブラリをMessagingに追加

52 views
Skip to first unread message

Tomonori Sano

unread,
Sep 27, 2010, 8:18:05 AM9/27/10
to overlayw...@googlegroups.com
首藤さん
皆様
こんにちは。佐野です。

今回、Netty ライブラリを Overlay Weaver の Messaging Service として
利用する実装を作成しました。
Netty は JBoss に使用されている TCP/UDP 用ライブラリで、Java NIO を
利用するハイパフォーマンス、ハイスケーラビリティが特徴のライブラリ
です。

http://www.jboss.org/netty.html

餅は餅屋ということで、送受信部分を実績あるライブラリに任せようと
いうのが目的です。
Netty は Overlay Weaver と同じく Apache License 2.0 です。
添付したソースも同じく Apache License 2.0 としますので、ライセンスの
範囲でご自由にお使いください。

利用方法は以下です。
(1)netty-3.2.2.Final.jar をクラスパスに追加します。
(2)新しい Messaging Service を登録するため、DHT を作成するより先に
 以下を実行します。
 netty.ow.tcp.NettyMessagingProvider.regist();
(3)DHTConfiguration.setMessagingTransport にて
 netty.ow.tcp.NettyMessagingProvider.NAME を指定することで
 利用可能になります。

現時点の問題点は以下となります。
(1)OW 標準の Messaging Service である ow.messaging.tcp と通信
 できない。
 シリアライズした byte[] をさらにラッピングして送受信するため
 です。
(2) (1) の理由により、非効率な通信となっている。
(3)MessageSender.sendAndReceive の動作が不完全かも?
 通常の sendAndReceive では、まず通信バッファに残っている受信データを
 破棄→送信→返答を受信、の順に行ないます。
 しかし Netty では通信バッファをクリアする処理が行えないため、いきなり
 送信して返答を待つことになります。
 また、取りこぼさないようにするため、返答の待ち受けを行ってから送信
 するため、タイミングによっては送信に対する返答以外のメッセージを
 受け取る可能性もあります。

このソースが皆様のお役に立てれば幸いです。
以上。

ow_netty.zip
Reply all
Reply to author
Forward
0 new messages