登録を処理したあと、サーバーは SC_REPLY メッセージを送信します。この送信は、登録要求を行なったクライアントがオープン状態に維持している TCP 接続に対して行われます。このあとサーバーはこの接続を閉じます。クライアントは、サーバーから SC_REPLY メッセージを受信するまで TCP 接続をオープン状態に保つ必要があります。
サーバーに対して TCP 接続を開きます。
接続が「writeable (書き込み可能)」になるまで待機します。
SC_CALLBACK_REG メッセージ (このメッセージには ADD_CLIENT メッセージが入っている) を送信します。
SC_REPLY メッセージの到着を待機します。
SC_REPLY メッセージを受け取ります。
サーバーが接続を閉じたことを示すインジケータを受信します (ソケットから 0 バイトを読み取る)。
接続を閉じます。
サーバーに対して TCP 接続を開きます。
接続が「writeable (書き込み可能)」になるまで待機します。
SC_CALLBACK_REG メッセージ (このメッセージには REMOVE_CLIENT メッセージが入っている) を送信します。
SC_REPLY メッセージの到着を待機します。
SC_REPLY メッセージを受け取ります。
サーバーが接続を閉じたことを示すインジケータを受信します (ソケットから 0 バイトを読み取る)。
接続を閉じます。
クライアントから SC_CALLBACK_REG メッセージを受け取るたびに、サーバーは同じ接続に SC_REPLY メッセージを送信します。このメッセージは、処理が正常に完了したか失敗したかを示すものです。SC_REPLY メッセージの XML ドキュメントタイプ定義とこのメッセージ内で示されるエラーメッセージについては、「SC_REPLY XML DTD」を参照してください。
SC_REPLY メッセージは、処理が正常に完了したか失敗したかを示します。このメッセージには、CRNP プロトコルメッセージのバージョン、ステータスコード、およびステータスコードの詳細を説明したステータスメッセージが含まれます。次の表は、ステータスコードの値を説明しています。
ステータスコード |
説明 |
---|---|
OK |
メッセージは正常に処理されました。 |
RETRY |
一時的なエラーのためにクライアントの登録はサーバーに拒否されました。クライアントは別のパラメータを使用して登録をもう一度試す必要があります。 |
LOW_RESOURCE |
クラスタのリソースが少ないため、クライアントはあとでもう一度試すか、システム管理者にクラスタのリソースを増やしてもらう必要があります。 |
SYSTEM_ERROR |
重大な問題が発生しました。クラスタのシステム管理者に連絡してください。 |
FAIL |
承認の失敗などの問題が発生し、登録が失敗しました。 |
MALFORMED |
XML 要求の形式が正しくないため解析が失敗しました。 |
INVALID |
XML 要求が無効です (XML 仕様を満たしていない)。 |
VERSION_TOO_HIGH |
メッセージのバージョンが高すぎて、メッセージを正常に処理できませんでした。 |
VERSION_TOO_LOW |
メッセージのバージョンが低すぎて、メッセージを正常に処理できませんでした。 |
通常、SC_CALLBACK_REG メッセージを送信するクライアントは登録の成功または失敗を知らせる応答を受け取ります。
しかし、クライアントが登録を試みる際にサーバーからの SC_REPLY メッセージの送信を妨げるエラーが発生することがあります。この場合、エラーが発生する前に登録が正常に完了することも、登録が失敗することも、あるいは登録処理が行われないまま終了することもあります。
サーバーはクラスタ上でフェイルオーバー (高可用) サーバーとして機能するため、このエラーがサービスの終了を意味するわけではありません。実際、サーバーは新しく登録されたクライアントに対してすぐにイベント送信を開始できます。
これらの状況を修復するには、クライアントは次の 2 つの作業を行う必要があります。
SC_REPLY メッセージを待機している登録用接続にアプリケーションレベルのタイムアウトを強制します (このあと、登録を再試行する必要がある)。
イベントコールバックの登録を行う前に、イベント配信用のコールバック IP アドレスとポート番号で待機を開始します。クライアントは、登録確認メッセージとイベント配信を同時に待機することになります。確認メッセージを受信する前にイベントを受信し始めた場合は、クライアントはそのまま登録接続を閉じる必要があります。