![]() |
![]() |
![]() |
![]() |
![]() |
•
• システム定義のイベント - Oracle Tuxedoシステムによって定義される状況(主に障害)です。たとえば、特定のシステムでの許容量の超過、サーバーの終了、セキュリティの侵害、ネットワーク障害などがあります。
• アプリケーション定義のイベント - カスタマ・アプリケーションによって定義される状況で、たとえば表5-1に示すようなものがあります。
表5-1 アプリケーション定義のイベント アプリケーション・イベントはアプリケーション定義イベントの発生、システム・イベントはシステム定義イベントの発生を意味します。Oracle Tuxedoのイベント・ブローカ・コンポーネントでは、アプリケーション・イベントとシステム・イベントの両方の受信および配信が可能です。システム定義のイベントは、Oracle Tuxedoシステムのコードによって定義され、通常はTM_MIB(5)で定義されているオブジェクトに関連付けられています。システム定義の全イベントのリストは、EVENTS(5)のリファレンス・ページに記載されています。これらすべてのイベントは、Oracle Tuxedoシステムのユーザーによって追跡されます。
• イベントをモニターし、イベントがtppost(3c)を介してポストされると、サブスクライバに通知します。
注意: デモとしてコピーして実行できるサンプル・アプリケーションについては、『Oracle Tuxedo ATMIアプリケーションの開発のためのチュートリアル』のbankapp(完全なC言語アプリケーション)のチュートリアルに関する項を参照してください。
• イベントを分断されたマシンとして識別するイベント属性イベント・ブローカは、単にシステム・イベントをサブスクライブすることによって使用できます。以降、MIBレコードを問い合せる必要なく、MIBオブジェクトを表すFMLデータ・バッファを受け取ることによって、MIBでイベントが発生したことが自動的に通知されます。Oracle Tuxedoのイベント・ブローカは、任意の数のイベント通知のサプライヤが任意の数のサブスクライバにメッセージをポストするためのツールです。イベント通知のサプライヤは、クライアントまたはサーバーとして動作しているアプリケーション・プロセスまたはシステム・プロセスです。イベント通知のサブスクライバは、クライアントまたはサーバーとして動作しているアプリケーション・プロセス、またはシステム管理者です。イベント・ブローカを使用するクライアント・プロセスとサーバー・プロセスは、サブスクリプションに基づいて相互に通信します。各プロセスでは、そのプロセスが受け取る必要のあるイベント・タイプが識別され、1つ以上のサブスクリプション・リクエストがイベント・ブローカに送信されます。イベント・ブローカでは、購読料を支払っている購読者だけに新聞を配達するように、そのリクエストを処理します。そのため、イベント・ブローカが基づいているパラダイムは、パブリッシュ・アンド・サブスクライブ通信と呼ばれます。イベント・サプライヤ(クライアントまたはサーバー)は、イベントが発生するたびにイベント・ブローカに通知します。このタイプの通知は、イベントのポストと呼ばれます。イベント・サプライヤがイベントをポストすると、イベント・ブローカはポストされたイベント・タイプと要求が合致するサブスクライバを探します。サブスクライバは、システム管理者またはアプリケーション・プロセスです。合致するサブスクライバが検出されると、イベント・ブローカは各サブスクリプションに対して指定された処理を行います。つまり、サブスクライバへの通知など、サブスクライバによって指定された処理が開始されます。図5-1に、イベント・ブローカがイベント・サブスクリプションを処理してポストするプロセスを示します。図5-1 イベントのポストとサブスクライブOracle Tuxedoアプリケーション管理者は、クライアント・プロセスとサーバー・プロセスのかわりに、EVENT_MIB(5)のT_EVENT_COMMANDクラスへの呼出しを行って、サブスクリプションをリクエストできます。イベント・ブローカを使用して、プログラムでtpsubscribe(3c)関数を呼び出してイベントをサブスクライブすることもできます。図5-2 サポートされている通知方法
• クライアントへの通知 - イベント・ブローカは、クライアントが通知を必要とする特定のイベントを追跡し、そのようなイベントが発生すると、自動的にクライアントに通知します。この方法は非請求通知と呼ばれます。
• サービスの呼出し - サブスクライバがイベント通知をサービス呼出しに渡す必要がある場合、サブスクライバ・プロセスはtpsubscribe()関数を呼び出して、呼び出すサービスの名前を渡します。
• 安定したストレージ・キューへのメッセージの登録 - サブスクリプションで、イベント通知を安定したストレージ・キューに送信することがリクエストされている場合、イベント・ブローカはキュー・スペース、キュー名、相関識別子を取得します。サブスクライバは、イベントをサブスクライブする際に、キュー名を指定します。相関識別子は、同じイベントの記述とフィルタ・ルールが定義され、格納先が同じキューである複数のサブスクリプションを区別するために使用されます。
• コマンドの実行 - イベントがポストされると、それに対応付けられたバッファがシステム・コマンドに変換されて実行されます。たとえば、電子メール・メッセージを送信するシステム・コマンドに変換されます。このプロセスは、MIBを介して行われる必要があります。
• ユーザー・ログへのメッセージの記録 - イベントが発生し、イベント・ブローカによって合致するリクエストがあることが検出されると、指定されたメッセージはユーザー・ログ(ULOG)に書き込まれます。このプロセスは、MIBを介して行われる必要があります。表5-2に、システム・イベントの重大度レベルを示します。
表5-2 システム・イベントの重大度レベル INFO (Informationの省略形) WARN (Warningの省略形)
• 無名通信 - イベント・ブローカを使用すると、Oracle Tuxedoの各プログラムで要求されるイベントをそのプログラムがサブスクライブできるようになります。また、すべてのサブスクリプションを追跡できるようになります。そのため、あるイベントのサブスクライバは、どのプログラムが同じイベントをサブスクライブするのか知る必要がありません。そして、イベントのポスト元は、ほかのどのプログラムがそのイベントをサブスクライブするのか知る必要がありません。この「無名」処理により、サブスクライバはイベントのポスト元と同期を取る必要がありません。
• 例外条件の分離 - パブリッシュ・アンド・サブスクライブ通信モデルでは、例外条件を検出するソフトウェアと、例外条件を処理するソフトウェアを分離できます。
• Oracle Tuxedoシステムとの統合化 - イベント・ブローカには、メッセージ・バッファ、メッセージ・パラダイム、分散トランザクション、およびイベント・ポストに対するACL権限チェックなどの機能があります。
• 各種の通知方法 - クライアントまたはサーバーがシステム・イベント(サーバーの終了など)またはアプリケーション・イベント(ATMマシンでのメモリー不足など)をサブスクライブしている場合、そのイベントの発生が通知されたときにイベント・ブローカが行う処理はクライアントまたはサーバーによって定義されています。
• 『Oracle Tuxedo ATMIの紹介』の6-3ページのATMIおよびEVENT_MIBを使用したイベントのサブスクライブ、ポスト、およびサブスクライブ解除に関する項
• 『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』のEVENT_MIB(5)に関する項
• 『Oracle Tuxedo ATMI C関数リファレンス』のtpsubscribe(3c)に関する項
• 『Oracle Tuxedo ATMI C関数リファレンス』のtpunsubscribe(3c)に関する項