この章では、作業に必要な様々な言語オプションと要素、および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 Java Message Service (Oracle JMS)を使用したOracle Database Advanced Queuingへのアクセス
Oracle Database Advanced Queuing XMLサーブレットを使用したOracle Database Advanced Queuingへのアクセス
表3-1は、Oracle Database Advanced Queuingのプログラム・インタフェースと、各インタフェースでサポートされる機能、および構文の参照先を示しています。
表3-1 Oracle Database Advanced Queuingのプログラム・インタフェース
言語 | プリコンパイラまたはインタフェース・プログラム | サポートされる機能 | 構文の参照先 |
---|---|---|---|
PL/SQL |
|
管理および操作 |
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
C |
操作のみ |
『Oracle Call Interfaceプログラマーズ・ガイド』 |
|
Java(JMS) |
JDBC APIを介しての |
管理および操作 |
『Oracle Database Advanced Queuing Java APIリファレンス』 |
AQ XMLサーブレット |
操作のみ |
『Oracle XML DB開発者ガイド』 |
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インタフェースを介して、Oracle Database Advanced Queuingの各機能へのインタフェースを提供します。
OCIクライアントは、次のアクションを実行できます。
メッセージのエンキュー
メッセージのデキュー
複数キュー上のメッセージのリスニング
メッセージ通知の受信登録
さらに、OCIクライアントは、OCISubscriptionRegister
を使用して、キューの新規メッセージの非同期通知を受信できます。
関連項目: 構文の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』のOCIおよびアドバンスト・キューイングおよびパブリッシュ・サブスクライブの通知に関する項を参照してください。 |
ユーザー定義のペイロード型のキューでは、OracleタイプのOCI/OCCIマッピングの生成にOracle Type Translatorを使用する必要があります。OCIクライアントは、Oracle Database Advanced Queuing記述子のメモリーおよびメッセージ・ペイロードを解放する必要があります。
C++アプリケーションはOCCIを使用できますが、これには、メッセージ・クライアントによるOracle Database Advanced Queuingへのアクセスを可能にするOracle Database Advanced Queuingインタフェースのセットが含まれます。OCCI AQでは、メッセージが使用可能なデータベースでのメッセージの送受信、およびパブリッシュ/サブスクライブに必要な操作関数をすべてサポートしています。メッセージ選択ルールに基づいた同期および非同期メッセージの受入れが可能です。
関連項目: 『Oracle C++ Call Interfaceプログラマーズ・ガイド』の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通信モデル
トピックを使用したパブリッシュ・サブスクライブ通信モデル
ObjectMessage
、StreamMessage
、TextMessage
、BytesMessage
、MapMessage
の各メッセージ型
非同期および同期のメッセージ配信
メッセージ・ヘッダー・フィールドまたはプロパティに基づくメッセージ選択
Oracle JMSの拡張機能は、次のとおりです。
キュー表、キューおよびトピック作成用の管理API
トピックの受信者リストを使用したPoint-to-Multipoint通信
宛先間でのメッセージの伝播。アプリケーションでのリモート・サブスクライバの定義が可能になります。
トランザクション・セッションのサポート。1つのトランザクションでJMS操作およびSQL操作が可能になります。
メッセージがデキューされた後のメッセージ保存
メッセージ遅延。一定の遅延の後にメッセージが表示されます。
例外処理。メッセージを正常に処理できない場合、メッセージが例外キューに移動されます。
AdtMessage
のサポート
これらはOracleオブジェクトとしてデータベースに格納されるため、メッセージのペイロードをエンキュー後に問い合せることができます。サブスクリプションは、メッセージ・プロパティのみでなく、これらのメッセージの内容にも定義できます。
トピックのブラウズ
これにより、永続サブスクライバがメッセージをパブリッシュ・サブスクライブ(トピック)先でブラウズできます。オプションで、これらのサブスクライバがブラウズ済メッセージをパージして、そのサブスクライバについてはメッセージがOracle Database Advanced Queuingによって保持されないようにできます。
関連項目:
|
標準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サーブレットを使用して、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サーブレットのデプロイ」を参照してください。 |
表3-2から表3-9は、Oracle Database Advanced Queuingの各プログラム・インタフェースで使用可能な機能を用途別に示したものです。各利用方法の詳細は、第8章から第10章および第12章から第15章を参照してください。
表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.getQueueTable |
キュー表の変更 |
DBMS_AQADM.ALTER_QUEUE_TABLE |
AQQueueTable.alter |
キュー表の削除 |
DBMS_AQADM.DROP_QUEUE_TABLE |
AQQueueTable.drop |
キューの作成 |
DBMS_AQADM.CREATE_QUEUE |
AQjmsSession.createQueue |
キューの取得 |
|
AQjmsSession.getQueue |
マルチ・コンシューマ対応のキュー表でのマルチ・コンシューマ・キュー/トピックの作成 |
DBMS_AQADM.CREATE_QUEUE |
AQjmsSession.createTopic |
マルチ・コンシューマ・キュー/トピックの取得 |
|
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 |
未サポート |
表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進表示を提供します例: |
未サポート |
構造化データを持つメッセージの作成 |
メッセージにSQL Oracleオブジェクト型を使用します |
メッセージにSQL Oracleオブジェクト型を使用します |
JMSキュー以外の( JMSキューでは、 |
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
OCIAQEnqOptions |
<AQXmlSend> 次のものに <producer_options> |
未サポート |
シングル・コンシューマ・キューへのメッセージのエンキュー: メッセージ・プロパティの優先順位と期限切れの指定 |
DBMS_AQ.enqueue 次のものにpriority、expirationを指定します MESSAGE_PROPERTIES |
OCIAQEnq 次のものに OCIAQMsgProperties |
<AQXmlSend> 次のものに <message_header> |
次の実行時に、 QueueSender.send または .setTimeToLive および MessageProducer. setPriority その後に次を指定します QueueSender.send |
シングル・コンシューマ・キューへのメッセージのエンキュー: メッセージ・プロパティの相関識別子、遅延、例外キューの指定 |
DBMS_AQ.enqueue 次のものにcorrelation、delay、exception_queueを指定します MESSAGE_PROPERTIES |
OCIAQEnq 次のものに OCIAQMsgProperties |
<AQXmlSend> 次のものに <message_header> |
Message.setJMS CorrelationI 遅延および例外キューは、次のプロバイダ固有のメッセージ・プロパティで指定します JMS_OracleDelay JMS_OracleExcpQ その後に次を指定します QueueSender.send |
シングル・コンシューマ・キューへのメッセージのエンキュー: ユーザー定義のメッセージ・プロパティの指定 |
未サポート プロパティはペイロードの一部である必要があります |
未サポート プロパティはペイロードの一部である必要があります |
<AQXmlSend> 次のものに、 <user_properties> |
Message.setInt Property Message.setString Property Message.setBoolean Property など。その後に次を指定します QueueSender.send |
シングル・コンシューマ・キューへのメッセージのエンキュー: メッセージ変換の指定 |
DBMS_AQ.enqueue 次のものにtransformationを指定します ENQUEUE_OPTIONS |
OCIAQEnq 次のものに OCIAQEnqOptions |
<AQXmlSend> 次のものに <producer_options> |
AQjmsQueueSender. setTransformation その後に次を指定します QueueSender.send |
表3-5 Oracle Database Advanced Queuingのプログラム・インタフェース別の比較: 操作インタフェース—マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ(パブリッシュ・サブスクライブ・モデルでの利用方法)
利用方法 | PL/SQL | OCI | AQ XMLサーブレット | JMS |
---|---|---|---|---|
マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: デフォルトのサブスクリプション・リストの使用 |
DBMS_AQ.enqueue 次のものの MESSAGE_PROPERTIES |
OCIAQEnq 次のものの OCIAQMsgProperties |
<AQXmlPublish> |
TopicPublisher. publish |
マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: 特定の受信者リストの使用 脚注1を参照 |
DBMS_AQ.enqueue 次のものに受信者リストを指定します MESSAGE_PROPERTIES |
OCIAQEnq 次のものに OCIAQMsgProperties |
<AQXmlPublish> 次のものに <message_header> |
AQjmsTopic Publisher.publish
|
マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: メッセージ・プロパティの優先順位と期限切れの指定 |
DBMS_AQ.enqueue 次のものにpriority、expirationを指定します MESSAGE_PROPERTIES |
OCIAQEnq 次のものに OCIAQMsgProperties |
<AQXmlPublish> 次のものに <message_header> |
次の実行時に、 TopicPublisher. publish または MessageProducer. setTimeToLive および MessageProducer. setPriority その後に次を指定します TopicPublisher. publish |
マルチ・コンシューマ・キュー/トピックへのメッセージのパブリッシュ: 送信オプション(相関識別子、遅延、例外キュー)の指定 |
DBMS_AQ.enqueue 次のものにcorrelation、delay、 MESSAGE_PROPERTIES |
OCIAQEnq 次のものに OCIAQMsgProperties |
<AQXmlPublish> 次のものに <message_header> |
Message.setJMS CorrelationID 遅延および例外キューは、次のプロバイダ固有のメッセージ・プロパティで指定。 JMS_OracleDelay JMS_OracleExcpQ その後に次を指定します TopicPublisher. publish |
トピックへのメッセージのパブリッシュ: ユーザー定義のメッセージ・プロパティの指定 |
未サポート プロパティはペイロードの一部である必要があります |
未サポート プロパティはペイロードの一部である必要があります |
<AQXmlPublish> 次のものに、 <user_properties> |
Message.setInt Property Message.setString Property Message.setBoolean Property など。その後に次を指定します TopicPublisher. publish |
トピックへのメッセージのパブリッシュ: メッセージ変換の指定 |
DBMS_AQ.enqueue 次のものにtransformationを指定します ENQUEUE_OPTIONS |
OCIAQEnq 次のものに OCIAQEnqOptions |
<AQXmlPublish> 次のものに <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_OPTIONS |
OCIAQDeq 次のものの OCIAQDeqOptions |
<AQXmlReceive> 次のものの <consumer_options> |
QueueSession.createBrowser QueueBrowser.getEnumeration トピックでは未サポートです oracle.jms.AQjmsSession. createBrowser oracle.jms.TopicBrowser. getEnumeration |
キュー/トピックのメッセージのブラウズ: ブラウズ中のメッセージのロック |
DBMS_AQ.dequeue 次のものの DEQUEUE_OPTIONS |
OCIAQDeq 次のものの OCIAQDeqOptions |
<AQXmlReceive> 次のものの <consumer_options> |
AQjmsSession.createBrowser 次のものの 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 次のものに OCIAQDeqOptions |
<AQXmlReceive> 次のものに <consumer_options> |
未サポート |
キュー/トピックからのメッセージのデキュー: 変換の指定 |
DBMS_AQ.dequeue 次のものにtransformationを指定します DEQUEUE_OPTIONS |
OCIAQDeq 次のものに OCIAQDeqOptions |
<AQXmlReceive> 次のものに <consumer_options> |
AQjmsQueueReceiver. setTransformation AQjmsTopicSubscriber. setTransformation AQjmsTopicReceiver. setTransformation |
キュー/トピックからのメッセージのデキュー: ナビゲーション・モードの指定 |
DBMS_AQ.dequeue 次のものにnavigationを指定します DEQUEUE_OPTIONS |
OCIAQDeq 次のものに OCIAQDeqOptions |
<AQXmlReceive> 次のものに <consumer_options> |
AQjmsQueueReceiver. setNavigationMode AQjmsTopicSubscriber. setNavigationMode AQjmsTopicReceiver. setNavigationMode |
シングル・コンシューマ・キューからのメッセージのデキュー |
DBMS_AQ.dequeue 次のものの DEQUEUE_OPTIONS |
OCIAQDeq 次のものの OCIAQDeqOptions |
<AQXmlReceive> |
QueueReceiver.receive または QueueReceiver.receive NoWait または AQjmsQueueReceiver. receiveNoData |
マルチ・コンシューマ・キュー/トピックからのメッセージのデキュー: サブスクリプション名を使用 |
DBMS_AQ.dequeue 次のものの DEQUEUE_OPTIONS |
OCIAQDeq 次のものの OCIAQDeqOptions |
<AQXmlReceive> 次のものに <consumer_options> |
サブスクリプション名を使用してトピックに永続的なTopicSubscriberを作成し、その後に次のいずれかを指定します TopicSubscriber. receive または TopicSubscriber. receiveNoWait または AQjmsTopicSubscriber. receiveNoData |
マルチ・コンシューマ・キュー/トピックからのメッセージのデキュー: 受信者名を使用 |
DBMS_AQ.dequeue 次のものの DEQUEUE_OPTIONS |
OCIAQDeq 次のものの OCIAQDeqOptions |
<AQXmlReceive> 次のものに <consumer_options> |
受信者名を使用してトピックに 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
OCISubscription Enable |
<AQXmlRegister>
<notify_url> |
キューに対して QueueReceiver.set MessageListener |
メッセージの非同期受信: マルチ・コンシューマ・キュー/トピックから |
PL/SQLコールバック・プロシージャを定義します 次のものを使用して登録します DBMS_AQ.REGISTER |
OCISubscription Register
OCISubscription Enable |
<AQXmlRegister>
|
トピックに対して TopicSubscriber. setMessageListener |
メッセージのリスニング: 複数キュー/トピック |
- |
- |
- |
- |
メッセージのリスニング: 1つ(または多数)のシングル・コンシューマ・キュー |
DBMS_AQ.LISTEN
|
OCIAQListen
|
未サポート |
1つの QueueSession.set MessageListener |
メッセージのリスニング: 1つ(または多数)のマルチ・コンシューマ・キュー/トピック |
DBMS_AQ.LISTEN
|
OCIAQListen
|
未サポート |
1つの TopicSession.set MessageListener |