ヘッダーをスキップ
Oracle® Databaseアドバンスト・キューイング・ユーザーズ・ガイド
12c リリース1 (12.1)
B71332-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 Oracle Database Advanced Queuing: プログラム・インタフェース

この章では、作業に必要な様々な言語オプションと要素、およびOracle Database Advanced Queuing (AQ)アプリケーション環境を準備するときに考慮する必要がある問題点を説明します。


注意:

Javaパッケージoracle.AQは、10gリリース1(10.1)では非推奨になりました。既存のJava AQアプリケーションをOracle JMS(または他のJava API)に移行し、新しく設計するJava AQアプリケーションにはOracle JMS(または他のJava API)を使用することをお薦めします。

内容は次のとおりです。

Oracle Database Advanced Queuingへのアクセスに必要なプログラム・インタフェース

表3-1は、Oracle Database Advanced Queuingのプログラム・インタフェースと、各インタフェースでサポートされる機能、および構文の参照先を示しています。

表3-1 Oracle Database Advanced Queuingのプログラム・インタフェース

言語 プリコンパイラまたはインタフェース・プログラム サポートされる機能 構文の参照先

PL/SQL

DBMS_AQADMおよびDBMS_AQパッケージ

管理および操作

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』

C

Oracle Call Interface(OCI)

操作のみ

『Oracle Call Interfaceプログラマーズ・ガイド』

Java(JMS)

JDBC APIを介してのoracle.JMSパッケージ

管理および操作

『Oracle Database Advanced Queuing Java APIリファレンス』

AQ XMLサーブレット

Internet Data Access Presentation(IDAP)

操作のみ

『Oracle XML DB開発者ガイド』


PL/SQLを使用したOracle Database Advanced Queuingへのアクセス

PL/SQLパッケージDBMS_AQADMおよびDBMS_AQは、ネイティブOracle Database Advanced Queuingインタフェースを使用した、Oracle Database Advanced Queuingの管理および操作機能へのアクセスをサポートします。これらの機能には、次のものがあります。

  • キューキュー表非永続キュー、マルチ・コンシューマ・キュー/トピック、RAWメッセージ、構造化データを持つメッセージの作成

  • キュー表、キュー、マルチ・コンシューマ・キュー/トピックの取得

  • キュー表、キュー/トピックの変更

  • キュー/トピックの削除

  • キュー/トピックの開始または停止

  • 権限の付与および取消し

  • サブスクライバの追加、削除、変更

  • Oracle Database Advanced Queuingインターネット・エージェントの追加、削除または変更

  • Oracle Database Advanced Queuingインターネット・エージェントに対するデータベース・ユーザー権限の付与または取消し

  • 伝播スケジュールの有効化、無効化、変更

  • シングル・コンシューマ・キュー(Point-to-Pointモデル)へのメッセージのエンキュー

  • マルチ・コンシューマ・キュー/トピック(パブリッシュ・サブスクライブ・モデル)へのメッセージのパブリッシュ

  • マルチ・コンシューマ・キューのメッセージに対するサブスクライブ

  • キューのメッセージのブラウズ

  • キュー/トピックからのメッセージの受信

  • メッセージの非同期受信登録

  • メッセージのリスニング: 複数キュー/トピック

  • 匿名サブスクリプションへのメッセージの転送

  • Lightweight Directory Access Protocol(LDAP)サーバーのエージェントのバインドまたはアンバインド

  • LDAPサーバーのOracle Database Advanced Queuingオブジェクトに対する別名の追加または削除


    関連項目:

    構文、パラメータ、パラメータ・タイプ、戻り値、例を含むDBMS_AQADMおよびDBMS_AQの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

PL/SQLのDBMS_AQADMおよびDBMS_AQで使用可能な機能の詳細は、表3-2から表3-9を参照してください。

OCIを使用したOracle Database Advanced Queuingへのアクセス

OCIは、ネイティブOracle Database Advanced Queuingインタフェースを介して、Oracle Database Advanced Queuingの各機能へのインタフェースを提供します。

OCIクライアントは、次のアクションを実行できます。

  • メッセージのエンキュー

  • メッセージのデキュー

  • 複数キュー上のメッセージのリスニング

  • メッセージ通知の受信登録

さらに、OCIクライアントは、OCISubscriptionRegisterを使用して、キューの新規メッセージの非同期通知を受信できます。


関連項目:

構文の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』のOCIおよびアドバンスト・キューイングおよびパブリッシュ・サブスクライブの通知に関する項を参照してください。

Oracle Type Translator

ユーザー定義のペイロード型のキューでは、OracleタイプのOCI/OCCIマッピングの生成にOracle Type Translatorを使用する必要があります。OCIクライアントは、Oracle Database Advanced Queuing記述子のメモリーおよびメッセージ・ペイロードを解放する必要があります。

OCCIを使用したOracle Database Advanced Queuingへのアクセス

C++アプリケーションはOCCIを使用できますが、これには、メッセージ・クライアントによるOracle Database Advanced Queuingへのアクセスを可能にするOracle Database Advanced Queuingインタフェースのセットが含まれます。OCCI AQでは、メッセージが使用可能なデータベースでのメッセージの送受信、およびパブリッシュ/サブスクライブに必要な操作関数をすべてサポートしています。メッセージ選択ルールに基づいた同期および非同期メッセージの受入れが可能です。


関連項目:

『Oracle C++ Call Interfaceプログラマーズ・ガイド』のOracle Database Advanced Queuingに関する項

Oracle Java Message Service (Oracle JMS)を使用したOracle Database Advanced Queuingへのアクセス

Java Message Service(JMS)は、Sun Microsystems、オラクル社、IBM社およびその他のベンダーが定義したメッセージ交換機能標準です。JMSは、JMSクライアントが企業のメッセージ関連製品の機能にアクセスする方法を定義する、インタフェースおよび対応するセマンティクスの集合です。

Oracle Java Message Service (Oracle JMS)には、JMS標準に基づいた、Oracle Database Advanced Queuing用のJava APIが用意されています。Oracle JMSは、標準のJMSインタフェースをサポートしている他、標準以外の管理操作や他の機能をサポートする拡張機能を備えています。

標準JMS機能には、次のものが含まれます。

  • キューを使用したPoint-to-Point通信モデル

  • トピックを使用したパブリッシュ・サブスクライブ通信モデル

  • ObjectMessageStreamMessageTextMessageBytesMessageMapMessageの各メッセージ型

  • 非同期および同期のメッセージ配信

  • メッセージ・ヘッダー・フィールドまたはプロパティに基づくメッセージ選択

Oracle JMSの拡張機能は、次のとおりです。

  • キュー表、キューおよびトピック作成用の管理API

  • トピックの受信者リストを使用したPoint-to-Multipoint通信

  • 宛先間でのメッセージの伝播。アプリケーションでのリモート・サブスクライバの定義が可能になります。

  • トランザクション・セッションのサポート。1つのトランザクションでJMS操作およびSQL操作が可能になります。

  • メッセージがデキューされた後のメッセージ保存

  • メッセージ遅延。一定の遅延の後にメッセージが表示されます。

  • 例外処理。メッセージを正常に処理できない場合、メッセージが例外キューに移動されます。

  • AdtMessageのサポート

    これらはOracleオブジェクトとしてデータベースに格納されるため、メッセージのペイロードをエンキュー後に問い合せることができます。サブスクリプションは、メッセージ・プロパティのみでなく、これらのメッセージの内容にも定義できます。

  • トピックのブラウズ

    これにより、永続サブスクライバがメッセージをパブリッシュ・サブスクライブ(トピック)先でブラウズできます。オプションで、これらのサブスクライバがブラウズ済メッセージをパージして、そのサブスクライバについてはメッセージがOracle Database Advanced Queuingによって保持されないようにできます。


    関連項目:

    • 『Java Message Service Specification』、バージョン1.1、2002年3月18日、Sun Microsystems, Inc.

    • 『Oracle Database Advanced Queuing Java APIリファレンス』


標準およびOracle JMSアプリケーションへのアクセス

標準JMSインタフェースはjavax.jmsパッケージにあります。Oracle JMSインタフェースはoracle.jmsパッケージにあります。Oracle JMSインタフェースを使用するには、DBMS_AQINおよびDBMS_AQJMSパッケージに対するEXECUTE権限が必要です。これらの権限は、AQ_USER_ROLEまたはAQ_ADMINSTRATOR_ROLEを使用しても取得できます。メッセージの送信または受信を行うには、適切なシステムおよびキュー権限またはトピック権限が必要です。

Oracle JMSは、Java Database Connectivity(JDBC)を使用してデータベースに接続するため、データベース外ではJDBC OCIドライバまたはJDBC Thinドライバを使用してOracle JMSアプリケーションを実行できます。

JDBC OCIドライバまたはJDBC Thinドライバの使用

データベース外で実行されるクライアントでJMSを使用するには、CLASSPATHに適切なJDBCドライバJava Naming and Directory Interface (JNDI)のjarファイルおよびOracle Database Advanced Queuingのjarファイルを指定する必要があります。

Oracle Databaseは、JDK 1.2、JDK 1.3、JDK 1.4、JDK5.nおよびすべてのclasses12*.*ファイルをサポートしていないことに注意してください。JDK 6.nおよびJDK 7.nでそれぞれojdbc6.jarおよびojbc7.jarを使用する必要があります。次のjarファイルとzipファイルは使用しているJDKのリリースに基づくCLASSPATHにある必要があります。

JDK 1.5.xの場合、CLASSPATHに次のパスを含める必要があります。

ORACLE_HOME/jdbc/lib/ojdbc6.jar

JDK 1.6.xの場合、CLASSPATHに次のパスを含める必要があります。

ORACLE_HOME/jdbc/lib/ojdbc7.jar 

いずれかのJDKバージョンに次のファイルを使用します。

ORACLE_HOME/lib/jta.jar
ORACLE_HOME/xdk/lib/xmlparserv2.jar
ORACLE_HOME/rdbms/jlib/xdb.jar
ORACLE_HOME/rdbms/jlib/aqapi.jar 
ORACLE_HOME/rdbms/jlib/jmscommon.jar

JServerでのOracleサーバー・ドライバの使用

アプリケーションがJServer内で実行される場合、JServerのインストール時に自動的にロードされたOracle JMSクラスにアクセスできる必要があります。これらのクラスが使用できない場合は、SQLスクリプト$ORACLE_HOME/rdbms/admin/initjmsを使用して、jmscommon.jarの後にaqapi.jarをロードする必要があります。

Oracle Database Advanced Queuing XMLサーブレットを使用したOracle Database Advanced Queuingへのアクセス

Oracle Database Advanced Queuing XMLサーブレットを使用して、HTTPでOracle Database Advanced Queuingにアクセスできますが、これには、Internet Data Access Presentation (IDAP)と呼ばれるSimple Object Access Protocol (SOAP)およびOracle Database Advanced Queuing XMLメッセージ・フォーマットが使用されます。

Oracle Database Advanced Queuingサーブレットを使用すると、クライアントは次のアクションを実行できます。

  • シングル・コンシューマ・キューへのメッセージの送信

  • マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ

  • キューからのメッセージの受信

  • メッセージ通知の受信登録


関連項目:

Oracle Database Advanced Queuing XMLサーブレットの詳細は、「Oracle Database Advanced Queuing XMLサーブレットのデプロイ」を参照してください。

Oracle Database Advanced Queuingのプログラム・インタフェース別の比較

表3-2から表3-9は、Oracle Database Advanced Queuingの各プログラム・インタフェースで使用可能な機能を用途別に示したものです。各利用方法の詳細は、第8章から第10章および第12章から第15章を参照してください。

Oracle Database Advanced Queuing管理インタフェース

表3-2は、Oracle Database Advanced Queuingの管理における、PL/SQLとJava(JMS)のプログラム・インタフェースの同等の機能を示しています。

表3-2 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 管理インタフェース

利用方法 PL/SQL Java(JMS)

コネクション・ファクトリの作成

不可

AQjmsFactory.getQueue
ConnectionFactory
AQjmsFactory.getTopic
ConnectionFactory

LDAPサーバーでのConnectionFactoryの登録

不可

AQjmsFactory.register
ConnectionFactory

キュー表の作成

DBMS_AQADM.CREATE_QUEUE_TABLE
AQjmsSession.createQueueTable

キュー表の取得

schema.queue_table_nameを使用します

AQjmsSession.getQueueTable

キュー表の変更

DBMS_AQADM.ALTER_QUEUE_TABLE
AQQueueTable.alter

キュー表の削除

DBMS_AQADM.DROP_QUEUE_TABLE
AQQueueTable.drop

キューの作成

DBMS_AQADM.CREATE_QUEUE
AQjmsSession.createQueue

キューの取得

schema.queue_nameを使用します

AQjmsSession.getQueue

マルチ・コンシューマ対応のキュー表でのマルチ・コンシューマ・キュー/トピックの作成

DBMS_AQADM.CREATE_QUEUE
AQjmsSession.createTopic

マルチ・コンシューマ・キュー/トピックの取得

schema.queue_nameを使用します

AQjmsSession.getTopic

キュー/トピックの変更

DBMS_AQADM.ALTER_QUEUE
AQjmsDestination.alter

キュー/トピックの開始

DBMS_AQADM.START_QUEUE
AQjmsDestination.start

キュー/トピックの停止

DBMS_AQADM.STOP_QUEUE
AQjmsDestination.stop

キュー/トピックの削除

DBMS_AQADM.DROP_QUEUE
AQjmsDestination.drop

システム権限の付与

DBMS_AQADM.GRANT_SYSTEM_
PRIVILEGE
AQjmsSession.grantSystem
Privilege

システム権限の取消し

DBMS_AQADM.REVOKE_SYSTEM_
PRIVILEGE
AQjmsSession.revokeSystem
Privilege

キュー/トピック権限の付与

DBMS_AQADM.GRANT_QUEUE_
PRIVILEGE
AQjmsDestination.grantQueue
Privilege
AQjmsDestination.grantTopic
Privilege

キュー/トピック権限の取消し

DBMS_AQADM.REVOKE_QUEUE_
PRIVILEGE
AQjmsDestination.revokeQueue
Privilege
AQjmsDestination.revokeTopic
Privilege

キュー・タイプの検証

DBMS_AQADM.VERIFY_QUEUE_TYPES

未サポート

サブスクライバの追加

DBMS_AQADM.ADD_SUBSCRIBER

表3-6を参照してください

サブスクライバの変更

DBMS_AQADM.ALTER_SUBSCRIBER

表3-6を参照してください

サブスクライバの削除

DBMS_AQADM.REMOVE_SUBSCRIBER

表3-6を参照してください

伝播のスケジューリング

DBMS_AQADM.SCHEDULE_PROPAGATION
AQjmsDestination.schedule
Propagation

伝播スケジュールの有効化

DBMS_AQADM.ENABLE_PROPAGATION_
SCHEDULE
AQjmsDestination.enable
PropagationSchedule

伝播スケジュールの変更

DBMS_AQADM.ALTER_PROPAGATION_
SCHEDULE
AQjmsDestination.alter
PropagationSchedule

伝播スケジュールの無効化

DBMS_AQADM.DISABLE_PROPAGATION_
SCHEDULE
AQjmsDestination.disable
PropagationSchedule

伝播スケジュールの解除

DBMS_AQADM.UNSCHEDULE_
PROPAGATION
AQjmsDestination.unschedule
Propagation

Oracle Database Advanced Queuingインターネット・エージェントの作成

DBMS_AQADM.CREATE_AQ_AGENT

未サポート

Oracle Database Advanced Queuingインターネット・エージェントの変更

DBMS_AQADM.ALTER_AQ_AGENT

未サポート

Oracle Database Advanced Queuingインターネット・エージェントの削除

DBMS_AQADM.DROP_AQ_AGENT

未サポート

Oracle Database Advanced Queuingインターネット・エージェントのへのデータベース・ユーザー権限の付与

DBMS_AQADM.ENABLE_AQ_AGENT

未サポート

Oracle Database Advanced Queuingインターネット・エージェントからのデータベース・ユーザー権限の取消し

DBMS_AQADM.DISABLE_AQ_AGENT

未サポート

LDAPサーバーにおけるキュー、エージェント、ConnectionFactoryの別名の追加

DBMS_AQADM.ADD_ALIAS_TO_LDAP

未サポート

LDAPサーバーにおけるキュー、エージェント、ConnectionFactory用の別名の削除

DBMS_AQADM.DEL_ALIAS_FROM_LDAP

未サポート


Oracle Database Advanced Queuing操作インタフェース

表3-3から表3-9は、様々な利用方法別に、Oracle Database Advanced Queuingの操作における、プログラム・インタフェースPL/SQL、OCI、Oracle Database Advanced Queuing XMLサーブレットおよびJMSの同等の機能を示しています。

表3-3 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—コネクション、セッション、メッセージの作成での利用方法

利用方法 PL/SQL OCI AQ XMLサーブレット JMS

コネクションの作成

不可

OCIServer
Attach

Webサーバーを使用して、認証後にHTTPコネクションをオープンします

AQjmsQueueConnectionFactory
.createQueueConnection
AQjmsTopicConnectionFactory
.createTopicConnection

セッションの作成

不可

OCISession
Begin

HTTPサーブレットは最初のSOAPリクエストで自動的に開始されます

QueueConnection.createQueue
Session
TopicConnection.createTopic
Session

RAWメッセージの作成

メッセージにSQL RAW型を使用します

メッセージにOCIRawを使用します

XMLメッセージにメッセージ・ペイロードの16進表示を提供します例: <raw>023f4523</raw>

未サポート

構造化データを持つメッセージの作成

メッセージにSQL Oracleオブジェクト型を使用します

メッセージにSQL Oracleオブジェクト型を使用します

JMSキュー以外の(AQ$_JMS_*型ではない)Oracleオブジェクト型キューでは、<message payload>に指定されているXMLをキュー表のペイロードのSQL型にマッピングする必要があります。

JMSキューでは、<jms_text_message><jms_map_message><jms_bytes_message><jms_object_message>のいずれかを、<message_payload>内のXMLに指定する必要があります

Session.createTextMessage
Session.createObjectMessage
Session.createMapMessage
Session.createBytesMessage
Session.createStreamMessage
AQjmsSession.createAdtMessage

メッセージ・プロデューサの作成

不可

不可

不可

QueueSession.createSender
TopicSession.createPublisher

表3-4 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—シングル・コンシューマ・キューへのメッセージのエンキュー(Point-to-Pointモデルでの利用方法)

利用方法 PL/SQL OCI AQ XMLサーブレット JMS

シングル・コンシューマ・キューへのメッセージのエンキュー

DBMS_AQ.enqueue
OCIAQEnq
<AQXmlSend>
QueueSender.send

キューへのメッセージのエンキュー: 可視性オプションの指定

DBMS_AQ.enqueue

次のものにvisibilityを指定します

ENQUEUE_OPTIONS
OCIAQEnq

OCIAQEnqOptionsOCI_ATTR_VISIBILITYを指定します

OCIAQEnqOptions
<AQXmlSend>

次のものに<visibility>を指定します

<producer_options>

未サポート

シングル・コンシューマ・キューへのメッセージのエンキュー: メッセージ・プロパティの優先順位と期限切れの指定

DBMS_AQ.enqueue

次のものにpriority、expirationを指定します

MESSAGE_PROPERTIES
OCIAQEnq

次のものにOCI_ATTR_PRIORITYOCI_ATTR_EXPIRATIONを指定します

OCIAQMsgProperties
<AQXmlSend>

次のものに<priority><expiration>を指定します

<message_header>

次の実行時に、priorityおよびTimeToLiveを指定します

QueueSender.send

または

.setTimeToLive

および

MessageProducer.
setPriority

その後に次を指定します

QueueSender.send

シングル・コンシューマ・キューへのメッセージのエンキュー: メッセージ・プロパティの相関識別子、遅延、例外キューの指定

DBMS_AQ.enqueue

次のものにcorrelation、delay、exception_queueを指定します

MESSAGE_PROPERTIES
OCIAQEnq

次のものにOCI_ATTR_CORRELATIONOCI_ATTR_DELAYOCI_ATTR_EXCEPTION_QUEUEを指定します

OCIAQMsgProperties
<AQXmlSend>

次のものに<correlation_id><delay><exception_queue>を指定します

<message_header>
Message.setJMS
CorrelationI

遅延および例外キューは、次のプロバイダ固有のメッセージ・プロパティで指定します

JMS_OracleDelay
JMS_OracleExcpQ

その後に次を指定します

QueueSender.send

シングル・コンシューマ・キューへのメッセージのエンキュー: ユーザー定義のメッセージ・プロパティの指定

未サポート

プロパティはペイロードの一部である必要があります

未サポート

プロパティはペイロードの一部である必要があります

<AQXmlSend>

次のものに、<name><int_value><string_value><long_value>などを指定します

<user_properties>
Message.setInt
Property
Message.setString
Property
Message.setBoolean
Property

など。その後に次を指定します

QueueSender.send

シングル・コンシューマ・キューへのメッセージのエンキュー: メッセージ変換の指定

DBMS_AQ.enqueue

次のものにtransformationを指定します

ENQUEUE_OPTIONS
OCIAQEnq

次のものにOCI_ATTR_TRANSFORMATIONを指定します

OCIAQEnqOptions
<AQXmlSend>

次のものに<transformation>を指定します

<producer_options>
AQjmsQueueSender.
setTransformation

その後に次を指定します

QueueSender.send

表3-5 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ(パブリッシュ・サブスクライブ・モデルでの利用方法)

利用方法 PL/SQL OCI AQ XMLサーブレット JMS

マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: デフォルトのサブスクリプション・リストの使用

DBMS_AQ.enqueue

次のもののrecipient_listNULLに設定します

MESSAGE_PROPERTIES
OCIAQEnq

次のもののOCI_ATTR_RECIPIENT_LISTNULLに設定します

OCIAQMsgProperties
<AQXmlPublish>
TopicPublisher.
publish

マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: 特定の受信者リストの使用

脚注1を参照

DBMS_AQ.enqueue

次のものに受信者リストを指定します

MESSAGE_PROPERTIES
OCIAQEnq

次のものにOCI_ATTR_RECIPIENT_LISTを指定します

OCIAQMsgProperties
<AQXmlPublish>

次のものに<recipient_list>を指定します

<message_header>
AQjmsTopic
Publisher.publish

AQjmsAgentの配列として受信者を指定します

マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: メッセージ・プロパティの優先順位と期限切れの指定

DBMS_AQ.enqueue

次のものにpriority、expirationを指定します

MESSAGE_PROPERTIES
OCIAQEnq

次のものにOCI_ATTR_PRIORITYOCI_ATTR_EXPIRATIONを指定します

OCIAQMsgProperties
<AQXmlPublish>

次のものに<priority><expiration>を指定します

<message_header>

次の実行時に、priorityおよびTimeToLiveを指定します

TopicPublisher.
publish

または

MessageProducer.
setTimeToLive

および

MessageProducer.
setPriority

その後に次を指定します

TopicPublisher.
publish

マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: 送信オプション(相関識別子、遅延、例外キュー)の指定

DBMS_AQ.enqueue

次のものにcorrelation、delay、exception_queueを指定します

MESSAGE_PROPERTIES
OCIAQEnq

次のものにOCI_ATTR_CORRELATIONOCI_ATTR_DELAYOCI_ATTR_EXCEPTION_QUEUEを指定します

OCIAQMsgProperties
<AQXmlPublish>

次のものに<correlation_id><delay><exception_queue>を指定します

<message_header>
Message.setJMS
CorrelationID

遅延および例外キューは、次のプロバイダ固有のメッセージ・プロパティで指定。

JMS_OracleDelay
JMS_OracleExcpQ

その後に次を指定します

TopicPublisher.
publish

トピックへのメッセージのパブリッシュ: ユーザー定義のメッセージ・プロパティの指定

未サポート

プロパティはペイロードの一部である必要があります

未サポート

プロパティはペイロードの一部である必要があります

<AQXmlPublish>

次のものに、<name><int_value><string_value><long_value>などを指定します

<user_properties>
Message.setInt
Property
Message.setString
Property
Message.setBoolean
Property

など。その後に次を指定します

TopicPublisher.
publish

トピックへのメッセージのパブリッシュ: メッセージ変換の指定

DBMS_AQ.enqueue

次のものにtransformationを指定します

ENQUEUE_OPTIONS
OCIAQEnq

次のものにOCI_ATTR_TRANSFORMATIONを指定します

OCIAQEnqOptions
<AQXmlPublish>

次のものに<transformation>を指定します

<producer_options>
AQjmsTopic
Publisher.set
Transformation

その後に次を指定します

TopicPublisher.
publish

表3-6 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—マルチ・コンシューマ・キュー/トピックのメッセージに対するサブスクライブ(パブリッシュ・サブスクライブ・モデルでの利用方法)

利用方法 PL/SQL OCI AQ XMLサーブレット JMS

サブスクライバの追加

管理インタフェースを参照してください

未サポート

未サポート

TopicSession.
createDurable
Subscriber
AQjmsSession.
createDurable
Subscriber

サブスクライバの変更

管理インタフェースを参照してください

未サポート

未サポート

TopicSession.
createDurable
Subscriber
AQjmsSession.
createDurable
Subscriber

新しいセレクタを使用します

サブスクライバの削除

管理インタフェースを参照してください

未サポート

未サポート

AQjmsSession.
unsubscribe

表3-7 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—キューのメッセージのブラウズでの利用方法

利用方法 PL/SQL OCI AQ XMLサーブレット JMS

キュー/トピックのメッセージのブラウズ

DBMS_AQ.
dequeue

次のもののdequeue_modeBROWSEに設定します

DEQUEUE_OPTIONS
OCIAQDeq

次のもののOCI_ATTR_DEQ_MODEBROWSEに設定します

OCIAQDeqOptions
<AQXmlReceive>

次のものの<dequeue_mode>BROWSEに指定します

<consumer_options>
QueueSession.createBrowser
QueueBrowser.getEnumeration

トピックでは未サポートです

oracle.jms.AQjmsSession.
createBrowser
oracle.jms.TopicBrowser.
getEnumeration

キュー/トピックのメッセージのブラウズ: ブラウズ中のメッセージのロック

DBMS_AQ.dequeue

次のもののdequeue_modeLOCKEDに設定します

DEQUEUE_OPTIONS
OCIAQDeq

次のもののOCI_ATTR_DEQ_MODELOCKEDに設定します

OCIAQDeqOptions
<AQXmlReceive>

次のものの<dequeue_mode>をLOCKEDに設定します

<consumer_options>
AQjmsSession.createBrowser

次のもののlockedTRUEに設定します

QueueBrowser.getEnumeration

トピックでは未サポートです

oracle.jms.AQjmsSession.
createBrowser
oracle.jms.TopicBrowser.
getEnumeration

表3-8 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—キュー/トピックからのメッセージの受信での利用方法

利用方法 PL/SQL OCI AQ XMLサーブレット JMS

メッセージ受信用のコネクションの起動

不可

不可

不可

Connection.start

メッセージ・コンシューマの作成

不可

不可

不可

QueueSession.
createQueueReceiver
TopicSession.create
DurableSubscriber 
AQjmsSession.create
TopicReceiver

キュー/トピックからのメッセージのデキュー: 可視性の指定

DBMS_AQ.dequeue

次のものにvisibilityを指定します

DEQUEUE_OPTIONS
OCIAQDeq

次のものにOCI_ATTR_VISIBILITYを指定します

OCIAQDeqOptions
<AQXmlReceive>

次のものに<visibility>を指定します

<consumer_options>

未サポート

キュー/トピックからのメッセージのデキュー: 変換の指定

DBMS_AQ.dequeue

次のものにtransformationを指定します

DEQUEUE_OPTIONS
OCIAQDeq

次のものにOCI_ATTR_TRANSFORMATIONを指定します

OCIAQDeqOptions
<AQXmlReceive>

次のものに<transformation>を指定します

<consumer_options>
AQjmsQueueReceiver.
setTransformation
AQjmsTopicSubscriber.
setTransformation
AQjmsTopicReceiver.
setTransformation

キュー/トピックからのメッセージのデキュー: ナビゲーション・モードの指定

DBMS_AQ.dequeue

次のものにnavigationを指定します

DEQUEUE_OPTIONS
OCIAQDeq

次のものにOCI_ATTR_NAVIGATIONを指定します

OCIAQDeqOptions
<AQXmlReceive>

次のものに<navigation>を指定します

<consumer_options>
AQjmsQueueReceiver.
setNavigationMode
AQjmsTopicSubscriber.
setNavigationMode
AQjmsTopicReceiver.
setNavigationMode

シングル・コンシューマ・キューからのメッセージのデキュー

DBMS_AQ.dequeue

次のもののdequeue_modeREMOVEに設定します

DEQUEUE_OPTIONS
OCIAQDeq

次のもののOCI_ATTR_DEQ_MODEREMOVEに設定します

OCIAQDeqOptions
<AQXmlReceive>
QueueReceiver.receive

または

QueueReceiver.receive
NoWait

または

AQjmsQueueReceiver.
receiveNoData

マルチ・コンシューマ・キュー/トピックからのメッセージのデキュー: サブスクリプション名を使用

DBMS_AQ.dequeue

次のもののdequeue_modeREMOVEに設定し、consumer_nameにサブスクリプション名を設定します

DEQUEUE_OPTIONS
OCIAQDeq

次のもののOCI_ATTR_DEQ_MODEREMOVEに設定し、OCI_ATTR_CONSUMER_NAMEにサブスクリプション名を設定します

OCIAQDeqOptions
<AQXmlReceive>

次のものに<consumer_name>を指定します

<consumer_options>

サブスクリプション名を使用してトピックに永続的なTopicSubscriberを作成し、その後に次のいずれかを指定します

TopicSubscriber.
receive

または

TopicSubscriber.
receiveNoWait

または

AQjmsTopicSubscriber.
receiveNoData

マルチ・コンシューマ・キュー/トピックからのメッセージのデキュー: 受信者名を使用

DBMS_AQ.dequeue

次のもののdequeue_modeREMOVEに設定し、consumer_nameに受信者名を設定します

DEQUEUE_OPTIONS
OCIAQDeq

次のもののOCI_ATTR_DEQ_MODEREMOVEに設定し、OCI_ATTR_CONSUMER_NAMEに受信者名を設定します

OCIAQDeqOptions
<AQXmlReceive>

次のものに<consumer_name>を指定します

<consumer_options>

受信者名を使用してトピックにTopicReceiverを作成する。その後に、次のいずれかを指定します

AQjmsSession.create
TopicReceiver
AQjmsTopicReceiver.
receive

または

AQjmsTopicReceiver.
receiveNoWait

または

AQjmsTopicReceiver.
receiveNoData

表3-9 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—キュー/トピックからメッセージを非同期受信するための登録での利用方法

利用方法 PL/SQL OCI AQ XMLサーブレット JMS

メッセージの非同期受信: シングル・コンシューマ・キューから

PL/SQLコールバック・プロシージャを定義します

次のものを使用して登録します

DBMS_AQ.REGISTER
OCISubscription
Register

queue_nameをサブスクリプション名として指定します

OCISubscription
Enable
<AQXmlRegister>

<destination>にキュー名を指定し、次のものに通知メカニズムを指定します

<notify_url>

キューに対してQueueReceiverを作成した後、次のものを指定します

QueueReceiver.set
MessageListener

メッセージの非同期受信: マルチ・コンシューマ・キュー/トピックから

PL/SQLコールバック・プロシージャを定義します

次のものを使用して登録します

DBMS_AQ.REGISTER
OCISubscription
Register

queue:OCI_ATTR_CONSUMER_NAMEをサブスクリプション名として指定します

OCISubscription
Enable
<AQXmlRegister>

<destination>にキュー名、<consumer_name>にコンシューマ、<notify_url>に通知メカニズムを指定します

トピックに対してTopicSubscriberまたはTopicReceiverを作成した後、次のものを指定します

TopicSubscriber.
setMessageListener

メッセージのリスニング: 複数キュー/トピック

-

-

-

-

メッセージのリスニング: 1つ(または多数)のシングル・コンシューマ・キュー

DBMS_AQ.LISTEN

agent_listのすべてのエージェントのagent_nameNULLを使用します

OCIAQListen

agent_listのすべてのエージェントのagent_nameNULLを使用します

未サポート

1つのQueueSessionに複数のQueueReceiversを作成した後、次のものを指定します

QueueSession.set
MessageListener

メッセージのリスニング: 1つ(または多数)のマルチ・コンシューマ・キュー/トピック

DBMS_AQ.LISTEN

agent_listのすべてのエージェントにagent_nameを指定します

OCIAQListen

agent_listのすべてのエージェントにagent_nameを指定します

未サポート

1つのTopicSessionに複数のTopicSubscribersまたはTopicReceiversを作成した後、次のものを指定します

TopicSession.set
MessageListener