ヘッダーをスキップ
Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド
11gリリース1(11.1)
E05782-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

A 非永続キュー

この付録では、非永続キューについて説明します。非永続キューは、Oracle Streams AQ 10gリリース2(10.2)で廃止されました。かわりにバッファ済メッセージを使用することをお薦めします。

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

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

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

内容は次のとおりです。

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が発生します。

A.2 非永続キューの管理

キューは、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に設定する必要があります。