第9章 エラー処理
Red Hat build of Rhea のエラーは、AMQP プロトコルまたは接続エラーに対応する名前付きイベントをインターセプトすることで処理できます。
9.1. 接続およびプロトコルエラーの処理 リンクのコピーリンクがクリップボードにコピーされました!
以下のイベントをインターセプトして、プロトコルレベルのエラーを処理できます。
-
connection_error -
session_error -
sender_error -
receiver_error -
protocol_error -
error
これらのイベントは、イベントにある特定のオブジェクトにエラー状態が生じるたびに実行されます。エラーハンドラーを呼び出すと、対応する <object>_close ハンドラーも呼び出されます。
event 引数には、エラーオブジェクトにアクセスするための error 属性があります。
例: エラーの処理
container.on("error", function (event) {
console.log("An error!", event.error);
});
container.on("error", function (event) {
console.log("An error!", event.error);
});
クローズハンドラーはエラー発生時に呼び出されるため、エラーハンドラー内でのみ処理する必要があります。リソースのクリーンアップは、近辺にあるハンドラーで管理できます。特定のオブジェクトに固有のエラー処理がない場合は、一般的な error イベントを処理してより具体的なハンドラーを持たないのが一般的です。
再接続が有効になっており、リモートサーバーが amqp:connection:forced の条件で接続が切断されると、クライアントはこれをエラーとして処理しないため、connection_error イベントは実行されません。代わりに、クライアントが再接続プロセスを開始します。