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.ora
のcompatible
パラメータおよびキュー表の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データを受信します。 |