今回、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 では通信バッファをクリアする処理が行えないため、いきなり
送信して返答を待つことになります。
また、取りこぼさないようにするため、返答の待ち受けを行ってから送信
するため、タイミングによっては送信に対する返答以外のメッセージを
受け取る可能性もあります。
このソースが皆様のお役に立てれば幸いです。
以上。