第32章 クライアントの再接続とセッションの再割り当て

HornetQ クライアントは、サーバークライアント接続で障害が検出された場合に、サーバーに自動的に再接続または再割り当てするよう設定できます。

32.1. 100% の透過セッションの再割り当て

障害が一時的 (つまり、一時ネットワーク障害が原因) であり、対象サーバーが再起動されない場合、セッションは connection-ttl の期限が切れない限りサーバーに存在します (connection-ttl の詳細については、15章使用済みの接続の検出 を参照してください)。
この場合、HornetQ によって、接続が再び確立されるときにクライアントセッションがサーバーセッションに再割り当てされます。これは、100% 透過的に行われ、クライアントは以前のように稼働し続けることができます。
HornetQ クライアントがコマンドをサーバーに送信する場合、サーバーは送信された各コマンドをメモリ内バッファーに格納します。接続障害が発生し、クライアントがサーバーに再接続されると、サーバーは、再割り当てプロトコルの一部として、正常に受信された最後のコマンドの ID をクライアントに渡し返します。クライアントが他のいずれかのコマンドを送信しようとした場合、クライアントとサーバーが差異を調整できるようクライアントはバッファからこれらのコマンドを再送信できます。
ConfirmationWindowSize パラメータ (通常は JBOSS_DIST/jboss-as/server/PROFILE/deploy/jms-ra.rar/META-INF/ra.xml ファイルで設定されます) によってバッファのサイズがバイト単位で定義されます。サーバーはコマンドの ConfirmationWindowSize バイトを受信し、処理すると、コマンド情報をクライアントに送信し返します。次に、クライアントは確認されたコマンドをバッファから削除できます。
ConfirmationWindowSize-1 (デフォルト値) に設定すると、バッファリングが無効になり、再接続が行われなくなり、代わりに再割り当てが強制的に実行されます。
JMS を使用しており、JMS 接続ファクトリーインスタンスを JNDI にロードするためにサーバー上の JMS サービスを使用している場合は、JBOSS_DIST/jboss-as/server/PROFILE/deploy/jms-ra.rar/META-INF/ra.xml ファイルの ConfirmationWindowSize パラメータをコメント解除します。JNDI ではなく JMS を使用している場合は、適切な setter メソッドを使用して HornetQConnectionFactory インスタンス上で直接これらの値を設定します。Core を使用している場合は、適切な setter メソッドを使用して ClientSessionFactory インスタンスで直接これらの値を設定できます。