Cluster Sender オブジェクト

目次

はじめに

チャネル送信コンポーネントは、ネットワーク経由で発信するクラスタメッセージを配信する役割を担います。デフォルトの実装である org.apache.catalina.tribes.transport.ReplicationTransmitter では、送信者は、実際の配信メカニズムを実装する非常に複雑な <Transport> コンポーネントを中心に、あまりロジックを持たない空のシェルです。

並行並列配信

デフォルトの transport 実装である org.apache.catalina.tribes.transport.nio.PooledParallelSender では、Apache Tribes は「並行並列配信」と呼ぶものを実装しています。これは、複数の宛先に同時に(並列に)メッセージを送信でき、同じ宛先に2つのメッセージを同時に(並行して)配信できることを意味します。これらを組み合わせると「並行並列配信」となります。

これはどのような場合に役立つのでしょうか?最も簡単な例として、コードの一部が 10MB のメッセージ(デプロイされる war ファイルなど)を送信しているときに、セッションの複製など、小さな 10KB のメッセージをプッシュする必要がある場合を考えてみましょう。10MB のメッセージが完了するのを待つ必要はなく、別のスレッドが同時に小さなメッセージ送信をプッシュします。現在、割り込み、一時停止、優先順位のメカニズムはありませんが、近日中にご確認ください。

ネストされた要素

ネストされた要素 <Transport> は必須ではありませんが、強く推奨されます。これは、発信メッセージのすべてのソケットオプションを設定する場所だからです。以下の属性を参照してください。

属性

共通 Sender 属性

属性説明
className必須、利用可能な実装は org.apache.catalina.tribes.transport.ReplicationTransmitter のみ

共通 Transport 属性

属性説明
className送信コンポーネントの実装。org.apache.catalina.tribes.transport.nio.PooledParallelSender は Tomcat によって提供されます。
rxBufSizeソケットの受信バッファサイズ。デフォルト値は 25188 バイトです。
txBufSizeソケットの送信バッファサイズ。デフォルト値は 65536 バイトです。
udpRxBufSizeデータグラムソケットの受信バッファサイズ。デフォルト値は 25188 バイトです。
udpTxBufSizeデータグラムソケットの送信バッファサイズ。デフォルト値は 65536 バイトです。
directBuffer可能な値は true または false です。レシーバーがソケットにデータを書き込むときにダイレクトバイトバッファを使用する場合は、true に設定します。デフォルト値は false です。
keepAliveCountソケットが閉じられ、次のリクエストのために再度開かれるまでにソケットを通過できるリクエスト数。デフォルト値は -1 で、無制限です。
keepAliveTime接続が開かれてから開いたままにされるミリ秒数。デフォルト値は -1 で、無制限です。
timeoutソケットに SO_TIMEOUT オプションを設定します。値はミリ秒単位で、デフォルト値は 3000 ミリ秒(3秒)です。このタイムアウトは、メッセージの送信試行が開始されてから、転送が完了するまで開始されます。NIOソケットの場合、これは、呼び出し元が、このタイムアウト値よりも長くメッセージを送信しようとしないことを保証できることを意味します。ブロッキングIO実装の場合、これはsoTimeoutに直接変換されます。
タイムアウトが発生しても、アプリケーションスレッドの復帰を保証するために、再試行は開始されません。
maxRetryAttemptsソケットレベルでIOExceptionを受け取った、失敗したメッセージを再試行する回数。デフォルト値は 1 です。これは、一度失敗したメッセージを再試行することを意味します。言い換えれば、メッセージの送信は最大2回試行されます。1つは元の送信で、もう1つは maxRetryAttempts です。
ooBInlineソケットの OOBINLINE オプションのブール値。可能な値は true または false です。
soKeepAliveソケットの SO_KEEPALIVE オプションのブール値。可能な値は true または false です。
soLingerOnSO_LINGERソケットオプションを使用するかどうかを決定するブール値。可能な値は true または false です。デフォルト値は true です。
soLingerTimeSO_LINGERソケットオプションの時間値を設定します。値は秒単位です。デフォルト値は 3 秒です。
soReuseAddressソケットの SO_REUSEADDR オプションのブール値。可能な値は true または false です。
soTrafficClassソケットのトラフィッククラスレベルを設定します。値は0〜255です。デフォルト値は int soTrafficClass = 0x04 | 0x08 | 0x010; です。異なる値は java.net.Socket#setTrafficClass(int) で定義されています。
tcpNoDelayソケットの TCP_NODELAY オプションのブール値。可能な値は true または false です。デフォルト値は true です。
throwOnFailedAckブール値、デフォルト値は true です。true に設定すると、リモートメンバーから否定応答を受信したときに、送信者は org.apache.catalina.tribes.RemoteProcessException をスローします。false に設定すると、Tribes は肯定応答を否定応答と同じように扱い、メッセージが受信されたものとみなします。

共通 PooledSender 属性

属性説明
poolSizeA から B への同時接続の最大数。値は宛先ごとのカウントに基づいています。デフォルト値は 25 です。
maxWait利用可能な送信者がいない場合に senderPool が待機する最大ミリ秒数。デフォルト値は 3000 ミリ秒(3秒)です。