2.2.2. ブローカーインスタンスの正常な停止

手動シャットダウンは、stop コマンドを入力すると、すべてのクライアントを強制的に切断します。別の方法として、graceful-shutdown-enabled設定要素を使用して、ブローカーが正常にシャットダウンするように設定します。

graceful-shutdown-enabledtrueに設定されている場合、stopコマンドが入力された後、新しいクライアントの接続は許可されません。ただし、シャットダウンプロセスを開始する前に、既存の接続はクライアント側で閉じることができます。graceful-shutdown-enabledのデフォルト値はfalseです。

graceful-shutdown-timeout構成要素を使用して、接続がブローカー側から強制的に閉じられる前にクライアントが切断する時間の長さをミリ秒単位で設定します。すべての接続が閉じられると、シャットダウンプロセスが開始します。graceful-shutdown-timeoutを使用する利点の1つは、クライアントの接続によるシャットダウンの遅延を防ぐことができることです。graceful-shutdown-timeoutのデフォルト値は-1で、これは、クライアントが切断するまでブローカーが無期限に待機することを意味します。

以下の手順は、タイムアウトを使用する正常なシャットダウンを設定する方法を示しています。

手順

  1. 設定ファイル <broker-instance-dir>\etc\broker.xml を開きます。
  2. graceful-shutdown-enabled設定要素を追加し、値をtrueに設定します。

    <configuration>
         <core>
              ...
              <graceful-shutdown-enabled>
                  true
              </graceful-shutdown-enabled>
              ...
         </core>
    </configuration>
  3. graceful-shutdown-timeout設定要素を追加し、タイムアウトの値をミリ秒単位で設定します。以下の例では、stop コマンドが実行されてから 30 秒 (30000 ミリ秒) 後に、クライアント接続が強制的に閉じられます。

    <configuration>
         <core>
              ...
              <graceful-shutdown-enabled>
                  true
              </graceful-shutdown-enabled>
              <graceful-shutdown-timeout>
                  30000
              </graceful-shutdown-timeout>
              ...
         </core>
    </configuration>