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

戻る
戻る
次へ
次へ
 

3 Oracle Streams AQ: プログラム・インタフェース

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


注意:

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

内容は次のとおりです。

3.1 Oracle Streams AQへのアクセスに必要なプログラム・インタフェース

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

表3-1 Oracle Streams AQのプログラム・インタフェース

言語 プリコンパイラまたはインタフェース・プログラム サポートされる機能 構文の参照先
PL/SQL DBMS_AQADMおよびDBMS_AQパッケージ 管理および操作 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』
C Oracle Call Interface(OCI) 操作のみ 『Oracle Call Interfaceプログラマーズ・ガイド』
Visual Basic Oracle Objects for OLE(OO4O) 操作のみ Oracleインストール環境の「Application Development」サブメニューから使用可能なオンライン・ヘルプ
Java(JMS) JDBC APIを介してのoracle.JMSパッケージ 管理および操作 『Oracle Streams Advanced Queuing Java API Reference』
AQ XMLサーブレット Internet Data Access Presentation(iDAP) 操作のみ 第6章「Oracle Streams AQへのインターネット・アクセス」

3.2 PL/SQLを使用したOracle Streams AQへのアクセス

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

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

3.3 OCIを使用したOracle Streams AQへのアクセス

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

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

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


関連項目:

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

Oracle Type Translator

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


関連項目:

OCIインタフェースの例については、付録C「OCIの例」を参照してください。ただし、この付録は、このマニュアルのHTMLバージョンにのみ含まれています。

3.4 OCCIを使用したOracle Streams AQへのアクセス

C++アプリケーションではOCCIを使用できます。OCCIは、メッセージ交換を行うクライアントがOracle Streams AQにアクセスするための、一連のOracle Streams AQインタフェースを提供します。OCCI AQは、メッセージ対応のデータベースに格納されているメッセージの送受信およびパブリッシュ・サブスクライブに必要なすべての操作機能をサポートします。メッセージ選択ルールに基づいて、同期および非同期でメッセージを処理できます。


関連項目:

『Oracle C++ Call Interfaceプログラマーズ・ガイド』のOracle Streams Advanced Queuingに関する項を参照してください。

3.5 Visual Basic(OO4O)を使用したOracle Streams AQへのアクセス

Visual Basic(OO4O)は、ネイティブOracle Streams AQインタフェースを介して、Oracle Streams AQの操作機能へのアクセスをサポートします。

次の機能が含まれます。


注意:

データベースがメッセージ伝播を処理するため、OO4Oはリモートおよびローカルの受信者を区別しません。メッセージをデキューするには、ローカルおよびリモートの受信者に対して、コール/ステップの順序が同じである必要があります。

3.6 Oracle Java Message Service(OJMS)を使用したOracle Streams AQへのアクセス

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

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

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

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

3.6.1 標準JMSおよび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 Streams AQのjarファイルを指定する必要があります。

JDK 1.3.x以上では、CLASSPATHに次のパスを指定します。

$ORACLE_HOME/jdbc/lib/classes12.jar
$ORACLE_HOME/jdbc/lib/orail8n.jar
$ORACLE_HOME/jdk/jre/lib/ext/jta.jar
$ORACLE_HOME/jdk/jre/lib/ext/jta.jar
$ORACLE_HOME/jlib/jndi.jar
$ORACLE_HOME/lib/xmlparserv2.jar
$ORACLE_HOME/rdbms/jlib/xdb.jar
$ORACLE_HOME/rdbms/jlib/aqapi13.jar
$ORACLE_HOME/rdbms/jlib/jmscommon.jar

JDK 1.2では、CLASSPATHに次のパスを指定します。

$ORACLE_HOME/jdbc/lib/classes12.jar
$ORACLE_HOME/jdbc/lib/orail8n.jar
$ORACLE_HOME/jdk/jre/lib/ext/jta.jar
$ORACLE_HOME/jlib/jndi.jar
$ORACLE_HOME/lib/xmlparserv2.jar
$ORACLE_HOME/rdbms/jlib/xdb.jar
$ORACLE_HOME/rdbms/jlib/aqapi12.jar
$ORACLE_HOME/rdbms/jlib/jmscommon.jar

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

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

3.7 Oracle Streams AQ XMLサーブレットを使用したOracle Streams AQへのアクセス

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

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


関連項目:

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

3.8 Oracle Streams AQのプログラム・インタフェース別の比較

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

3.8.1 Oracle Streams AQ管理インタフェース

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

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

利用方法 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 Streams AQインターネット・エージェントの作成
DBMS_AQADM.CREATE_AQ_AGENT
未サポート
Oracle Streams AQインターネット・エージェントの変更
DBMS_AQADM.ALTER_AQ_AGENT
未サポート
Oracle Streams AQインターネット・エージェントの削除
DBMS_AQADM.DROP_AQ_AGENT
未サポート
Oracle Streams AQインターネット・エージェントへのデータベース・ユーザー権限の付与
DBMS_AQADM.ENABLE_AQ_AGENT
未サポート
Oracle Streams AQインターネット・エージェントからのデータベース・ユーザー権限の取消し
DBMS_AQADM.DISABLE_AQ_AGENT
未サポート
LDAPサーバーにおけるキュー、エージェント、ConnectionFactoryの別名の追加
DBMS_AQADM.ADD_ALIAS_TO_LDAP
未サポート
LDAPサーバーにおけるキュー、エージェント、ConnectionFactory用の別名の削除
DBMS_AQADM.DEL_ALIAS_FROM_LDAP
未サポート

3.8.2 Oracle Streams AQ操作インタフェース

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

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

利用方法 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キューでは、<message_payload>に指定されているXMLが、<jms_text_message><jms_map_message><jms_bytes_message>または<jms_object_message>のいずれかである必要がある。

Session.createTextMessage
Session.createObjectMessage
Session.createMapMessage
Session.createBytesMessage
Session.createStreamMessage
AQjmsSession.createAdtMessage
メッセージ・プロデューサの作成 不可 不可 不可
QueueSession.createSender
TopicSession.createPublisher

表3-4 Oracle Streams AQのプログラム・インタフェース別の比較: 操作インタフェース—シングル・コンシューマ・キューへのメッセージのエンキュー(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_PRIORITY, OCI_ATTR_EXPIRATIONを指定する。
OCIAQMsgProperties
<AQXmlSend>
次のものに<priority><expiration> を指定する。
<message_header>
QueueSender.sendの実行時に、priorityおよびTimeToLiveを指定する。

または

.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 Streams AQのプログラム・インタフェース別の比較: 操作インタフェース—マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ(パブリッシュ・サブスクライブ・モデルでの利用方法)

利用方法 PL/SQL OCI AQ XMLサーブレット JMS
マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: デフォルトのサブスクリプション・リストの使用
DBMS_AQ.enqueue
次のもののrecipient_listNULLに設定する。
MESSAGE_PROPERTIES
OCIAQEnq
次のもののOCI_ATTR_RECIPIENT_LISTNULLに設定する。
OCIAQMsgProperties
<AQXmlPublish>
TopicPublisher.
publish
マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: 特定の受信者リストの使用
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_PRIORITY, OCI_ATTR_EXPIRATIONを指定する。
OCIAQMsgProperties
<AQXmlPublish>
次のものに<priority><expiration>を指定する。
<message_header>
TopicPublisher.publishの実行時に、priorityおよびTimeToLiveを指定する。

または

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 Streams AQのプログラム・インタフェース別の比較: 操作インタフェース—マルチ・コンシューマ・キュー/トピックのメッセージに対するサブスクライブ(パブリッシュ・サブスクライブ・モデルでの利用方法)

利用方法 PL/SQL OCI AQ XMLサーブレット JMS
サブスクライバの追加 管理インタフェースを参照 未サポート 未サポート
TopicSession.
createDurable
Subscriber
AQjmsSession.
createDurable
Subscriber
サブスクライバの変更 管理インタフェースを参照 未サポート 未サポート
TopicSession.
createDurable
Subscriber
AQjmsSession.
createDurable
Subscriber
新しいセレクタを使用する。
サブスクライバの削除 管理インタフェースを参照 未サポート 未サポート
AQjmsSession.
unsubscribe

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

利用方法 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 Streams AQのプログラム・インタフェース別の比較: 操作インタフェース—キュー/トピックからのメッセージの受信での利用方法

利用方法 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 Streams AQのプログラム・インタフェース別の比較: 操作インタフェース—キュー/トピックからメッセージを非同期受信するための登録での利用方法

利用方法 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