製品概要

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

Oracle Tuxedo Message Queue製品概要

次の項では、Oracle Tuxedo Message Queue製品の概要を説明します。

 


Oracle OTMQの理解

Oracle Tuxedo Message Queue (OTMQ)コンポーネントは、Oracle Tuxedoのキューイング・サービスを改善および拡張します。Oracle Tuxedo /Qコンポーネントの既存のキューイング機能に加え、OTMQでは、信頼性の高いメッセージ配信、同期/非同期メッセージング、パブリッシュ/サブスクライブ、メッセージ・フィルタリング、動的キュー・エイリアス(ネーミング)、ジャーナルといった、より豊富なキューイング機能が提供されます。また、OTMQはOracle Tuxedoインフラストラクチャに基づいて実装されているため、トランザクション、セキュリティ、スケーラビリティおよびHAがサポートされます。

次の項では、OTMQ機能の概要を説明します。

複数のキュー・タイプ

Oracle OTMQには、その動作を定義する複数の属性があります。詳細は、『Oracle Tuxedo Message Queueコマンド・リファレンス・ガイド』tmqadmin()に関する項を参照してください。

キュー・タイプは、キューのライフ・サイクルによって次のように分けられます。

永続キュー

永続キューは、事前に割り当てる必要があります。永続キューには、永続または一時のアクティブ・プロパティがあります。永続アクティブ・キューは、記憶域割当て制限を超過しないかぎり、それにアタッチしているアプリケーションがなくても、常にメッセージを受信して格納できます。一時アクティブ・キューは、アプリケーションによってアタッチされている場合にのみ、メッセージを受信して格納できます。永続キューは、tmqadmin()qcreateコマンドによって作成されます。

永続キューには、作成時に次のタイプのうちの1つを指定します。

プライマリ・キュー(PQ)

プライマリ・キューは、ユーザー・プロセスのメイン・メールボックスとして動作し、別のプロセスからのメッセージを受信します。アタッチできるのは、1つのキュー・クライアントのみです。アプリケーションで保持できるのは、1つのプライマリ・キューのみですが、別のタイプのキューとの関連付けが可能です。

セカンダリ・キュー(SQ)

セカンダリ・キューは、ユーザー・プロセスの代替メールボックスとして動作し、メッセージを受信します。アプリケーションは、アタッチすることでセカンダリ・キューを所有します。アプリケーションで、セカンダリ・キューの所有者であるプライマリ・キューにアタッチすると、それと同時に、そのアプリケーションは自動的にセカンダリ・キューにもアタッチされます。アプリケーションがそのプライマリ・キューからデタッチすると、関連するすべてのセカンダリ・キューもデタッチされます。

マルチリーダー・キュー(MRQ)

マルチリーダー・キューは事前割当てです。同時に複数のキュー・クライアントがそれにアタッチできます。

無制限キュー(UNLIMITQ)

無制限キューの動作は、従来のTuxedo /Qキューとまったく同じです。アプリケーションでは、無制限キューからデキューするために無制限キューにアタッチする必要はありません。

一時キュー

一時キューは、実行時にアプリケーションでアタッチをリクエストしたときに作成されます。一時キューにアタッチしているプロセスはそのキューの所有者となり、他のプロセスはそのキューにアタッチすることも、キューからメッセージを受信することもできません。アプリケーションが一時キューからデタッチすると、そのキューに残されたすべてのメッセージは削除されます。一時キューの数および範囲は、tmqadmin()のqspacecreateコマンドで指定します。

信頼性の高いメッセージ配信

Oracle OTMQでは、確実に受信者へメッセージを正常に配信できる、信頼性の高いメッセージ配信が提供されます。

詳細は、『Oracle Tuxedo Message Queueプログラミング・ガイド』の「リカバリ可能メッセージングの使用」を参照してください。

配信インタレスト・ポイント

配信インタレスト・ポイント(DIP)は、メッセージ配信中のチェックポイントです。メッセージが指定したチェックポイントを通過すると、ACK通知メッセージが送信元アプリケーションに返信され、メッセージ配信のステータスが示されます。

Oracle OTMQでは、次のDIPがサポートされています。

同期/非同期通信

Oracle OTMQアプリケーションでは、次に示すモードでメッセージをエンキュー/送信できます。

同期モード

アプリケーションでは、ターゲットにメッセージを送信した後、確認応答があるまで待機します。メッセージが特定の配信インタレスト・ポイントに送信されるまで待つ、という選択もできます。

非同期モード

アプリケーションでは、メッセージ送信後の待機は行わず、明示的にtpdeqplus(3c)を呼び出してACK通知メッセージを取得し、メッセージがターゲットに正常に配信されたことを確認します。

応答なしモード

アプリケーションでは、メッセージ送信後の待機は行わず、確認メッセージも期待しません。このモードは、パフォーマンスを重視するケースのためのものです。

配信不可メッセージ・アクション

配信不可メッセージ・アクション(UMA)は、メッセージの送信者が確認応答の通知の失敗を受信したときのアクションです。

信頼性の高いメッセージ配信が有効の場合、UMAは、メッセージのSAF/DQF記憶域への格納に失敗したときのアクションです。

そうでない場合は、UMAは、メッセージの配信が失敗した場合のアクションです。

有効なOracle OTMQのUMAオプションを、次の表に示します。

表1 OTMQのUMAオプション
UMA
説明
DISC
破棄 - メッセージは削除されます。
RTS
送信者への返信 - メッセージは、送信者のレスポンス・キューに配信されます。
SAF
ストア・アンド・フォワード - メッセージは、送信者のシステム上のメッセージ・リカバリ・ジャーナルに書き込まれます。
DLQ
配信不能キュー - メッセージは、配信不能キューに書き込まれます。
DLJ
使用不能のレター・ジャーナル - メッセージは、DLJに書き込まれます。

メッセージ・フィルタ

メッセージは、キューに対して別の順序を指定しないかぎり、FIFOの順序でキューから読み出されます。また、Oracle OTMQでは、メッセージ・フィルタが提供され、それに定義した選択基準に一致するメッセージのみを読み取ることができます。詳細は、『Oracle Tuxedo Message Queueプログラミング・ガイド』の「フィルタの使用」を参照してください。

パブリッシュ/サブスクライブ

パブリッシュおよびサブスクライブ機能は、メッセージを、メッセージ・ブロードキャスト・ストリームからの受信情報に登録されている複数の受信者に送信します。それは、メッセージをキューイングするクライアントおよびサーバー内のイベントの非同期ルーティングです。

パブリッシュ/ブロードキャスト

Oracle OTMQアプリケーションでは、標準のtpqpublish()関数を使用してブロードキャスト・メッセージを送信できます。送信側アプリケーションでは、受信側プログラムの場所や数を知らなくてもブロードキャスト・メッセージを生成できます。

サブスクライブ

Oracle OTMQアプリケーションでは、最初にブロードキャスト・ストリームにサブスクライブすることで、選択的にブロードキャスト・メッセージを受信できます。メッセージ・ストリームを受信するには、受信側アプリケーションで、まずtpqsubscribe()を使用してメッセージ・ストリームにサブスクライブします。その後、そのアプリケーションでブロードキャスト・メッセージが有効になり、標準のtpdeqplus()関数を使用した処理により、受信者のキューに流れ込みます。

詳細は、『Oracle Tuxedo Message Queueプログラミング・ガイド』の「パブリッシュ/サブスクライブ」を参照してください。

ネーミング

ネーミングは、アプリケーションでキュー名のかわりにエイリアスでキューを参照できるようにする強力な機能です。ネーミングにより、アプリケーションが現在の環境構成の詳細から切り離され、システム管理者は、開発者にアプリケーションの変更を依頼することなしに構成を変更できるようになります。

詳細は、『Oracle Tuxedo Message Queueプログラミング・ガイド』の「ネーミングの使用」を参照してください。

ジャーナル

Oracle OTMQでは、リカバリ可能と指定されたメッセージの格納にメッセージ・リカバリ・ジャーナル・キューが使用されます。

ローカルのキュー・スペース上のメッセージ・ジャーナル・キューは、ストア・アンド・フォワード(SAF)と呼ばれます。リモートのキュー・スペース上のメッセージ・ジャーナル・キューは、宛先キュー・ファイル(DQF)と呼ばれます。リカバリ可能メッセージが配信できなかった場合、SAFまたはDQFのいずれかに格納され、自動的にターゲットに再送されます。

配信不能キュー(DLQ)は、自動リカバリのために格納できなかった配信不可メッセージを格納するメモリー・ベースのメカニズムです。DLQと同様に、使用不能のレター・ジャーナル(DLJ)は、自動リカバリのために格納できなかった配信不可メッセージを格納するディスク・ベースのメカニズムです。

もう1つの補助的なジャーナル・キューが、事後確認ジャーナル(PCJ)です。受信者による確認の成功したリカバリ可能メッセージは、監査のためにPCJに書き込むことができます。

Oracle OTMQでは、これらのジャーナル・キューからメッセージをダンプするため、tpqreadjrn()関数が提供されます。

詳細は、『Oracle Tuxedo Message Queueプログラミング・ガイド』の「リカバリ可能メッセージングの使用」を参照してください。

WS SAF

WSモードでは、リカバリ可能配信モードを使用して送信されるOTMQメッセージは、サーバー・システムへの接続が使用できない場合、ローカルのストア・アンド・フォワード(SAF)ジャーナル・ファイル(tmqsaf.jrn)に書き込まれます。

注意: このWS SAF機能は、WSクライアントが「シングルコンテキスト」モードの場合にのみ使用可能です。詳細は、『Oracle Tuxedo関数リファレンス』tpinit(3c)に関する項を参照してください。

大規模なQSPACEサイズのサポート

OTMQのQSPACEは、64ビットのUNIXプラットフォームで、永続および非永続メッセージの両方で2Gのサイズ制限を超えることができます。

tmqadminで、サブコマンドの「crdl」がQSPACE用の永続デバイスを作成します。このコマンドの最大値は2147483647で、これはシステムの変数で、単位はシステム・ブロック・サイズです。このため、永続QSpaceの最大サイズは、2147483647*ブロック(バイト)です。

tmqadmin->qspacecreateコマンドには-nオプションがあり、このオプションは、キュー・スペース内のすべてのキューの非永続メッセージのために共有メモリー内に予約される領域のサイズを指定します。このサイズは、バイト(b)またはブロック(B)で指定でき、ブロック・サイズはディスクのブロック・サイズと同じです。qspacecreateコマンドの-nの引数となる「ブロック(B)」および「バイト(b)」は、どちらの最大値も2147483647です。ブロック(B)引数を使用する場合、予約される非永続メッセージの最大サイズは、2147483647*ブロックです。

注意: 64ビット・プラットフォームのHPUXでは、hpux_ma.hの中で_TMSIGNLESHMが1に定義されており、これは、1つのプロセスが1つの共有メモリー・セグメントを作成し、それをアドレス空間にアタッチすることを表します。このため、tmqadminコマンドで2Gを超える共有メモリーを作成する場合は、Oracle Tuxedo環境変数のTM_ENGINE_TMSHMSEGSZを、システムで定義されるSHMAXの値を超えない、より大きな値に設定します。
注意: もう1つの環境変数TM_QM_NAPTIMEがあり、これはスレッドのスリープ時間をナノ秒で定義します。この変数の使用は、キューのデッド・ロック状態を検出するための時間間隔を拡張する可能性があることに注意してください。

自動マルチ・コンテキストのサポート

Oracle Tuxedo APIのtpinit()には、シングル・コンテキスト・モードとマルチコンテキスト・モードの2つの動作モードがあります。OTMQでは、アプリケーションで明示的にtpinit()を呼び出しても、OTMQは自動的にはマルチコンテキスト・モードにはなりません

アプリケーションでtpinit()を呼び出さない場合、それに続くtpqattach()の呼び出しでOTMQは自動的にマルチコンテキスト・モードになります。WSクライアントでは、マルチコンテキスト・モード関連の自動化は使用できません。

 


Oracle OTMQシステム・コンポーネント

Oracle OTMQでは、キューイング・サービスのため、次に示すシステム・レベルのコンポーネントが提供されます。

キューイング・サービスをサポートするため、Oracle OTMQでは、Oracle OTMQキュー・スペースを管理するX/OPEN XA準拠のリソース・マネージャ・インタフェースとして、新規のトランザクション・マネージャ・サーバーTMS_TMQMが提供されます。

基本的なキューイング・サービスばかりではなく、Oracle OTMQでは、お客様のための追加機能も提供されます。これらの機能をサポートするためのOracle OTMQのシステム・レベル・コンポーネントを次に示します。

Oracle OTMQは、従来のメッセージ・キュー製品であるOracle Message Queue (OMQ)との相互運用も可能です。メッセージ・レベルでの相互運用性を実現するためのOracle OTMQの2つのシステム・レベル・コンポーネントを次に示します。

 


関連項目


  先頭に戻る       前  次