20.2.2. Netty TCP の設定

Netty TCP は暗号化されていない TCP ソケットをベースとした簡単なトランスポートです。Netty TCP を設定すると旧式の ブロッキング Java IO またはノンブロッキング Java NIO を使用できます。同時接続が多い場合にスケーラビリティーが高いためサーバー側には Java NIO の使用が推奨されます。同時接続の数が少ない場合は、旧式の Java IO の待ち時間は NIO よりも短くなります。
Netty TCP は暗号化されないため、信頼されないネットワークで接続を実行する場合には推奨されません。Netty TCP トランスポートではすべての接続がクライアント側から開始されます。

例20.1 デフォルトの EAP 設定からの Netty TCP の設定例

<connectors>
  <netty-connector name="netty" socket-binding="messaging"/>
  <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
    <param key="batch-delay" value="50"/>
  </netty-connector>
  <in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
  <netty-acceptor name="netty" socket-binding="messaging"/>
  <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
    <param key="batch-delay" value="50"/>
    <param key="direct-deliver" value="false"/>
  </netty-acceptor>
  <in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
この設定例は、HornetQ の JBoss EAP 6 実装がアクセプターおよびコネクター設定でソケットバインディングを使用する方法を示しています。これは、HornetQ のスタンドアロンバージョンによって異なり、特定のホストとポートを宣言する必要があります。
下表は Netty TCP 設定プロパティーの説明になります。

表20.1 Netty TCP 設定プロパティー

プロパティーデフォルト説明
batch-delay0 ミリ秒パケットをトランスポートに書き込む前に、HornetQ を設定すると batch-delay に設定されたミリ秒を上限として書き込みを一括処理できます。メッセージ転送の平均待ち時間が長くなり、大変小さなメッセージのスループットの合計が増加します。
direct-delivertrueメッセージがサーバーに到達し、待機しているコンシューマーに配信されたとき、デフォルトではメッセージが到達したスレッドで配信が実行されます。これにより、メッセージが比較的小さく、コンシューマーの数が少ない環境で適切な待ち時間が発生しますが、スループットや待ち時間が少なくなります。スループットを最大限にする場合はこのプロパティーを false に設定します。
local-address[使用可能なローカルアドレス]Netty コネクターでは、リモートアドレスへ接続するときにクライアントが使用するローカルアドレスを指定するために使用されます。ローカルアドレスが指定されていない場合は、コネクターは使用できるローカルアドレスを使用します。
local-port0Netty コネクターでは、リモートアドレスへ接続するときにクライアントが使用するローカルポートを指定するために使用されます。local-port のデフォルト (0) が指定された場合、システムが一時的なポートを選択します。有効なポートは 0 から 65535 です。
nio-remoting-threads-1NIO を使用するよう設定された場合、デフォルトでは受信パケットの処理に Runtime.getRuntime().availableProcessors() によって報告されたコア (またはハイパースレッド) の数の 3 倍にあたるスレッド数が HornetQ によって使用されます。この値を上書きするには、スレッド数にカスタム値を設定します。
tcp-no-delaytruetrue の場合、Nagle アルゴリズムが有効になります。このアルゴリズムは、ネットワーク上で送信されるパケットの数を削減し、TCP/IP ネットワークの効率を向上します。
tcp-send-buffer-size32768 バイトこのパラメーターは TCP が送信するバッファーのサイズ (バイト単位) を決定します。
tcp-receive-buffer-size32768 バイトこのパラメーターは TCP が受信するバッファーのサイズ (バイト単位) を決定します。
use-niofalsetrue の場合、ノンブロッキング Java NIO が使用されます。false に設定された場合、旧式のブロッキング Java IO が使用されます。サーバーに多くの同時接続を処理させる必要がある場合はノンブロッキング Java NIO を使用します。これ以外の場合は旧式の (ブロッキング) IO を使用するとよいでしょう。

注記

Netty TCP プロパティーはすべてのタイプのトランスポートに対して有効です。