A 非永続キュー

Oracle Database Advanced Queuingでは、サブスクライバに非永続メッセージを非同期に配信できます。これらのメッセージはイベント・ドリブンの可能性があり、システム(またはインスタンス)に障害が発生すると保持されません。メッセージは、システムによって作成されたキュー表に格納されます。Oracle Database Advanced Queuingは、1つの共通APIで永続および非永続メッセージをサポートします。

非永続キューは、シングル・コンシューマまたはマルチ・コンシューマのいずれかで、現在接続されているすべてのユーザーへの通知のメカニズムを提供します。サブスクライバをマルチ・コンシューマ非永続キューに追加して、非永続キューを伝播の宛先にすることができます。

ユーザーは、エンキュー・インタフェースを使用して、通常の方法で非永続キューにメッセージをエンキューします。非永続キューに、RAW型およびOracleオブジェクト型のメッセージをエンキューできます。OCI通知は、現在通知登録されているユーザーに、そのようなメッセージを配信するために使用されます。

次のトピックでは、非永続的キューについて説明します(これは、Oracle Database Advanced Queuing 10gリリース2 (10.2)では推奨されていません)。かわりにバッファ済メッセージを使用することをお薦めします。

トピック:

A.1 非永続キューの作成

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をコールできません。

非永続キューを削除できるのは、所有者のみです。

A.3 非永続キューの互換性

8.1互換以上のキューで、非永続キューを使用するには、init.oracompatibleパラメータおよびキュー表compatibleパラメータを8.1以上に設定する必要があります。

A.4 非永続キュー通知

非永続キューの場合、メッセージは通知の一部として配信されます。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データを受信します。

A.5 非永続キューの制限

RAWおよびOracleオブジェクト型の非永続的キューを作成できます。メッセージの送信は、サブスクライバおよびローカルである明示的に指定された受信者に制限されます。非永続的キューからの伝播はサポートされていません。メッセージを取り出す際、デキュー・コールは使用できませんが、かわりにOCISubscriptionRegisterを使用して通知の登録を行い、非同期通知メカニズムを採用する必要があります。

非永続メッセージの場合、enqueue_optionsvisibility属性をIMMEDIATEに設定する必要があります。

関連項目:

エンキュー・オプション