17 Oracle Messaging Gatewayの概要
メッセージ・ゲートウェイ管理パッケージDBMS_MGWADMでは、メッセージ・ゲートウェイ・エージェントの作成、エージェントの管理、メッセージ・システム・リンクの作成、Oracle以外のキューの登録および伝播ジョブの設定のためのインタフェースを提供しています。
トピック:
17.1 Oracle Messaging Gatewayの概要
メッセージ・ゲートウェイを使用すると、Oracle以外のメッセージ・システムとOracle Database Advanced Queuingに基づくアプリケーション間の通信が可能になります。
Oracle Database Advanced Queuingでは、2つのOracle Database Advanced Queuingキュー間の伝播機能が提供されており、E-Business(IDAPを介したHTTP)が可能です。メッセージ・ゲートウェイでは、この機能をOracle以外のメッセージ・システムに基づくアプリケーションに拡張しています。
メッセージ・ゲートウェイはOracle Database Advanced QueuingおよびOracle Databaseと統合されているため、信頼性のあるメッセージ配信が可能です。メッセージ・ゲートウェイを使用すると、永続性がサポートされているOracle以外のメッセージ・システムとOracle Database Advanced Queuing間で、メッセージの配信が1回のみ行われることが保証されます。PL/SQLインタフェースでは、特にOracle Database Advanced Queuingの使用方法をすでによく理解している開発者を対象に、簡単に使用できる管理APIが提供されます。
今回のリリースのメッセージ・ゲートウェイでは、Oracle Database Advanced QueuingとWebSphere MQ 7.0.1.3およびTIB/Rendezvous 8.2ベースのアプリケーションの統合がサポートされています。
17.2 Oracle Messaging Gatewayの機能
メッセージ・ゲートウェイの機能は次のとおりです。
-
Oracle Database Advanced Queuingメッセージ伝播の拡張
メッセージ・ゲートウェイでは、Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間でメッセージが伝播されます。Oracle Database Advanced Queuingアプリケーションによって送信されたメッセージは、Oracle以外のメッセージ・システム・アプリケーションで受信できます。逆に、Oracle以外のメッセージ・システム・アプリケーションによってパブリッシュされたメッセージは、Oracle Database Advanced Queuingアプリケーションで使用できます。
-
Java Message Service(JMS)メッセージ・システムに対するサポート
メッセージ・ゲートウェイでは、Oracle Java Message Service(Oracle JMS)およびWebSphere MQ Java Message Service(WebSphere MQ JMS)間でメッセージを伝播します。
-
システム固有のメッセージ・フォーマットのサポート
メッセージ・ゲートウェイでは、メッセージ・システム固有のメッセージ・フォーマットがサポートされています。Oracle Database Advanced Queuingメッセージは、
RAW
または任意のOracleオブジェクト型のペイロードを持てます。WebSphere MQメッセージには、テキスト・メッセージまたはバイト・メッセージが有効です。TIB/Rendezvousメッセージは、ネスト化されたデータ型MSG
および符号のない整数以外の任意のTIB/Rendezvousワイヤ・フォーマットのデータ型にできます。 -
メッセージの変換
メッセージ・ゲートウェイを使用すると、Oracle Database Advanced QueuingメッセージとOracle以外のメッセージ・システムのメッセージ間でメッセージを簡単に変換できます。メッセージは、メッセージ・ゲートウェイによって提供される自動メッセージ変換ルーチンまたはユーザーによって提供されたメッセージ変換関数のいずれかを介して変換されます。
注意:
-
メッセージ・ゲートウェイでは、JMSメッセージ・システムとJMS以外のメッセージ・システム間のメッセージ伝播はサポートされていません。
-
Oracle Database AQシャード・キューは、Oracle Database 12cリリース2 (12.2)のMGWではサポートされません。
-
-
Oracle Databaseとの統合
メッセージ・ゲートウェイは、Oracle Database Advanced Queuingと類似したPL/SQLインタフェースによって管理されています。構成情報は、Oracle Database表に格納されています。メッセージの伝播は、Oracle Databaseサーバーの外部プロセスによって実行されます。
-
メッセージ配信の保証
トランザクションが伝播元のメッセージ・システムと伝播先のメッセージ・システムの両方でサポートされている場合、メッセージ・ゲートウェイでは永続メッセージが1回のみ伝播されることが保証されます。メッセージが永続メッセージではないか、伝播元または伝播先のメッセージ・システムでトランザクションがサポートされていない場合は、伝播が行われることが保証されるのみです。
-
セキュリティ・サポート
メッセージ・ゲートウェイでは、Oracle DatabaseおよびOracle以外のメッセージ・システムのクライアント認証がサポートされています。
メッセージ・ゲートウェイでは、メッセージ・ゲートウェイ・エージェントによるIBM WebSphere MQおよびWebSphere MQ JMS接続においてSecure Socket Layer(SSL)もサポートされています。
-
複数エージェントのサポート
メッセージ・ゲートウェイでは、1つのデータベースに対して複数のエージェントがサポートされています。伝播ジョブを機能、編成または作業負荷別にパーティション化し、異なるメッセージ・ゲートウェイ・エージェントに割り当てることができます。これにより、メッセージ・ゲートウェイがOracle RAC環境で拡張され、伝播ジョブのグループ化および分離が可能になります。
17.3 Oracle Messaging Gatewayのアーキテクチャ
メッセージ・ゲートウェイには、次の2つの主要コンポーネントがあります。
-
管理パッケージDBMS_MGWADM
-
メッセージ・ゲートウェイ・エージェント
図17-1は、これらのコンポーネントがOracle DatabaseとOracle以外のメッセージ・システム間で連動する方法を示したものです。
17.3.1 管理パッケージDBMS_MGWADM
メッセージ・ゲートウェイ管理パッケージDBMS_MGWADM
では、指定されたメッセージ・ゲートウェイ・エージェントの作成、エージェントの管理、メッセージ・システム・リンクの作成、Oracle以外のキューの登録および伝播ジョブの設定のためのインタフェースを提供しています。
メッセージ・ゲートウェイ・エージェントが稼働中かどうかにかかわらず、構成を変更するには、ユーザーはパッケージのプロシージャをコールします。メッセージ・ゲートウェイ・エージェントが稼働中の場合は、パッケージ内のプロシージャが構成の変更に関する通知をエージェントに送信します。大部分の構成変更では、エージェントは動的に構成を変更しますが、一部、変更を反映するために、エージェントを停止して再起動する必要がある場合があります。パッケージ内のすべてのプロシージャはシリアライズされており、メッセージ・ゲートウェイ・エージェントが通知を作成時と同じ順序で受信し、処理できることが保証されています。
関連項目:
DBMS_MGWADM
パッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
17.3.2 Oracle Messaging Gatewayのエージェント
メッセージ・ゲートウェイ・エージェントは、Oracle Databaseサーバーの外部プロセスとして実行され、伝播ジョブを処理します。起動および停止するには、DBMS_MGWADM
パッケージのSTARTUP
およびSHUTDOWN
プロシジャをそれぞれコールします。
メッセージ・ゲートウェイ・エージェントには、マルチスレッド伝播エンジンおよびメッセージ・システム用のドライバ・セットが含まれます。伝播エンジンによって伝播ジョブが適切にスケジューリングされ、伝播処理が同時に処理されます。エージェントのポーリング・スレッドによって、有効な伝播ジョブのソース・キューが定期的にポーリングされ、メッセージが使用可能な場合は、ワーカー・スレッドが起動して伝播ジョブが処理されます。Oracle以外のメッセージ・システムのドライバは、すべてのメッセージ操作においてメッセージ・システムのクライアントとして実行されます。
17.3.3 Oracle Database
メッセージ・ゲートウェイでは、Oracle Databaseとして、Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間のメッセージ伝播用メカニズムを提供しています。Oracle Database Advanced Queuingは、伝播元または伝播先のいずれかの立場ですべての伝播ジョブに関与しています。
メッセージ・ゲートウェイは、PL/SQL管理パッケージDBMS_MGWADM
を介して管理されています。すべての構成情報とメッセージ・ゲートウェイの実行状態情報はOracle Databaseに格納され、データベース・ビューからアクセスできます。
メッセージ・ゲートウェイ・エージェントは、Oracle Databaseサーバーの外部プロシージャとして実行されます。したがって、関連付けられたデータベース・サーバーが実行中の場合のみ実行されます。
17.3.4 Oracle以外のメッセージ・システム
メッセージ・ゲートウェイ・エージェントは、メッセージ・システム・リンクを介してOracle以外のメッセージ・システムに接続されます。メッセージ・システム・リンクとは、メッセージ・ゲートウェイ・エージェントとOracle以外のメッセージ・システム間の通信チャネルです。ユーザーは、管理パッケージDBMS_MGWADM
を使用して、同じまたは異なるOracle以外のメッセージ・システムへの複数のリンクを構成できます。
WebSphere MQキュー、TIB/Rendezvousサブジェクト、WebSphere MQ JMS宛先(キューおよびトピック)などのOracle以外のメッセージ・システム内のキューは、すべてメッセージ・ゲートウェイの伝播元および伝播先として機能できます。これらのキューを外部キューと呼びます。ソース・キュー、宛先キューまたは例外キューとしてメッセージ伝播に関与するすべての外部キューは、管理パッケージを経由して登録する必要があります。外部キューを登録しても、Oracle以外のメッセージ・システムに物理的なキューは作成されず、キューにアクセスするためのメッセージ・システム・リンク、システム固有の名前、ドメイン(キューまたはトピック)など、キューに関する情報が記録されるだけです。物理的なキューは、Oracle以外のメッセージ・システムの管理インタフェースを介して作成する必要があります。
関連項目:
17.4 伝播処理の概要
メッセージが1つのメッセージ・システムから別のメッセージ・システムに伝播されるようにするには、伝播ジョブを定義する必要があります。伝播ジョブは、ソース・キュー、宛先キュー、および伝播ジョブの処理に影響する他の各種属性を定義します。
伝播ソースがPoint-to-Pointキューの場合は、メッセージ・ゲートウェイ・エージェントによってキュー内のすべてのメッセージが宛先に移動されます。伝播ソースがトピック(パブリッシュ・サブスクライブ)の場合は、メッセージ・ゲートウェイ・エージェントによって伝播ソース・トピックのサブスクリプションが作成されます。サブスクリプションを作成すると、エージェントによってパブリッシュされたすべてのメッセージがトピックに移動されます。
伝播ジョブはスケジュールが有効になったときに処理されます。伝播ジョブを無効にすると伝播処理が停止されますが、メッセージ・サブスクリプションは停止されません。
メッセージ・ゲートウェイ・エージェントが伝播ジョブを処理すると、ソース・キューからメッセージがデキューされ、宛先キューへメッセージがエンキューされます。メッセージは、各メッセージの伝播時に、ソース・メッセージ・システム固有のフォーマットから宛先メッセージ・システム固有のフォーマットに変換されます。メッセージ・ゲートウェイでは、一般的に使用されている単純なメッセージ・フォーマット間のメッセージ変換は自動的に実行されます。独自のメッセージ変換機能を提供することによって、メッセージ変換をカスタマイズできます。
メッセージ・ゲートウェイ・エージェントがソース・フォーマットから宛先フォーマットへのメッセージ変換に失敗すると、例外キューがある場合は、エージェントによってメッセージがソース・キューから例外キューに移動され、伝播ジョブの処理が続行されます。
伝播ジョブの処理中に障害が発生した場合、メッセージ・ゲートウェイ・エージェントはジョブを停止する前に、指数バックオフ・スキームで最大16回ジョブを再試行します(2秒から最大30分)。
信頼できるメッセージ配信を保証するために、メッセージ・ゲートウェイではトランザクションと永続メッセージをサポートしているメッセージ・システムでロギング・キューが必要になります。メッセージ・ゲートウェイ・エージェントでは、ロギング・キューを使用して伝播ジョブの処理状態を格納し、障害から伝播処理を復元できるようにしています。