この付録では、非永続キューについて説明します。非永続キューは、Oracle Streams AQ 10gリリース2(10.2)で廃止されました。かわりにバッファ済メッセージを使用することをお薦めします。
Oracle Streams AQでは、サブスクライバに非永続メッセージを非同期に配信できます。これらのメッセージはイベント・ドリブンの可能性があり、システム(またはインスタンス)に障害が発生すると保持されません。メッセージは、システムによって作成されたキュー表に格納されます。Oracle Streams AQは、1つの共通APIで永続および非永続メッセージをサポートします。
非永続キューは、シングル・コンシューマまたはマルチ・コンシューマのいずれかで、現在接続されているすべてのユーザーへの通知のメカニズムを提供します。サブスクライバをマルチ・コンシューマ非永続キューに追加して、非永続キューを伝播の宛先にすることができます。
ユーザーは、エンキュー・インタフェースを使用して、通常の方法で非永続キューにメッセージをエンキューします。非永続キューに、RAW型およびOracleオブジェクト型のメッセージをエンキューできます。OCI通知は、現在通知登録されているユーザーに、そのようなメッセージを配信するために使用されます。
内容は次のとおりです。
DBMS_AQADM.CREATE_NP_QUEUE ( queue_name IN VARCHAR2, multiple_consumers IN BOOLEAN DEFAULT FALSE, comment IN VARCHAR2 DEFAULT NULL);
このプロシージャは、非永続キューを作成します。
非永続キューでは、ローカル受信者のみがサポートされています。このキューは、シングル・コンシューマまたはマルチ・コンシューマのいずれかです。すべてのキュー名は、スキーマ内において一意である必要があります。このキューは、キュー名によって指定されたものと同じスキーマ内にある、システムが作成した8.1互換のキュー表(AQ$_MEM_SC
またはAQ$_MEM_MC
)に作成されます。キュー名にスキーマ名が指定されていないときは、ログイン・ユーザーのスキーマにキューが作成されます。
注意: 非永続キューの名前は、24文字より長くできません。長い名前の非永続キューを作成しようとすると、エラーORA-24019が発生します。 |
キューは、CREATE_NP_QUEUE
で作成した後、START_QUEUE
をコールすると有効になります。デフォルトでは、キューはエンキューとデキューの両方を無効にして作成されます。
非永続キューに、RAW型およびOracleオブジェクト型のメッセージをエンキューできます。ユーザーは、非永続キューからはデキューできません。非永続キューからメッセージを取り出す唯一の方法は、Oracle Call Interface(OCI)の通知メカニズムを使用する方法です。非永続キューにはlisten
をコールできません。
非永続キューを削除できるのは、所有者のみです。
8.1互換以上のキューで、非永続キューを使用するには、init.ora
のcompatible
パラメータおよびキュー表のcompatible
パラメータを8.1以上に設定する必要があります。
非永続キューの場合、メッセージは通知の一部として配信されます。RAW表現が指定された場合に実行される非永続キューのアクションを、通知メカニズム別で表A-1に示します。XML表現が指定されたときに実行されるキューのアクションを、表A-2に示します。
表A-1 RAW表現が指定された場合に実行される非永続キューのアクション
キュー・ペイロード型 | OCIコールバック | 電子メール | PL/SQLコールバック |
---|---|---|---|
RAW | OCIコールバックは、ペイロードのRAWデータを受信します。 | 未サポート | PL/SQLコールバックは、ペイロードのRAWデータを受信します。 |
Oracleオブジェクト型 | 未サポート | 未サポート | 未サポート |
表A-2 XML表現が指定された場合に実行される非永続キューのアクション
キュー・ペイロード型 | OCIコールバック | 電子メール | PL/SQLコールバック |
---|---|---|---|
RAW | OCIコールバックは、ペイロードのXMLデータを受信します。 | XMLデータがSOAPメッセージとしてフォーマットされ、登録されている電子メール・アドレスに送信されます。 | PL/SQLコールバックは、ペイロードのXMLデータを受信します。 |
Oracleオブジェクト型 | OCIコールバックは、ペイロードのXMLデータを受信します。 | XMLデータがSOAPメッセージとしてフォーマットされ、登録されている電子メール・アドレスに送信されます。 | PL/SQLコールバックは、ペイロードのXMLデータを受信します。 |