JMSOutput ノード

JMSOutput ノードを使用して、JMS 宛先にメッセージを送信します。

このトピックには、以下のセクションが含まれています。

目的

JMSOutput ノードは JMS メッセージ・プロデューサーとして機能して、Java Message Service Specification、バージョン 1.1 (Java Message Service Specification, version 1.1) で定義された 6 つのメッセージ・タイプのすべてをパブリッシュすることができます。 メッセージは、JMS 仕様で説明されているメソッド呼び出しを使用してパブリッシュされます。

JMSOutput ノードはパレットの JMS ドロワーに含まれていて、ワークベンチ では次のアイコンによって表されます。

JMSOutput ノード・アイコン

メッセージ・フロー内での JMSOutput ノードの使用

以下のサンプルには、JMSOutput ノードが使用されるメッセージ・フローが含まれます。 JMSOutput ノードの使用方法を示す例については、このサンプルを参照してください。 サンプルは、Message Brokers Toolkit と統合されているインフォメーション・センターを使用する場合にのみ表示できます。

JMS プロバイダーへの接続から受け取ったメッセージを処理するメッセージ・フローは、常に JMSInput ノードで開始する必要があります。 JMSOutput ノードをメッセージ・フロー内に含める場合、JMSInput ノードを含める必要はありませんが、JMSInput ノードを組み込まない場合 MQJMSTransform ノードを組み込んで、JMSOutput ノードで規定されている形式にメッセージを変換する必要があります。

JMS メッセージを伝搬して、サブフローとして使用するメッセージ・フローを作成する場合、JMSOutput ノードのインスタンスを最終ノードとして使用して、そのサブフロー用の Out ターミナルを作成します。

JMS 出力メッセージのタイプの制御

JMS メッセージ・ツリーでは、JMS メッセージ・タイプは、Message_MetaData サブフォルダーの PayloadType フィールドによって表現されます。JMSOutput ノードによって作成される JMS メッセージのタイプを制御するには、次の例に示されているように、ESQL コードを使用して、ペイロード値を設定します。
SET OutputRoot.JMSTransport.Transport_Folders.Message_MetaData.PayloadType=Payload value

JMS メッセージ・ツリーおよびペイロード値について詳しくは、JMS Transport 全体でのメッセージの表記を参照してください。

JMS プロバイダーのクライアントを JMS ノードで使用可能にする

多数の JMSProvider 用の構成可能サービスが定義されています。 事前定義サービスのうちの 1 つを選択できますが、新規プロバイダーまたは既存プロバイダーのうちの 1 つのための新しいサービスを作成することもできます。

1 つ以上の定義された構成可能サービスを表示するには、mqsireportproperties コマンドを使用します。 以下の例は、単一のブローカーに使用できるすべての構成可能サービスを表示します。
mqsireportproperties brokerName -c AllTypes -o AllReportableEntityNames -r 
  • WebSphere® MQ JMS プロバイダーを使用する場合、ブローカー・システム上のデフォルト・ロケーションに WebSphere MQ がインストールされていれば、プロパティーはすでに設定済みになっているので、何も変更する必要はありません。
  • WebSphere MQ JMS プロバイダーを使用する場合に、WebSphere MQ を別の (デフォルト以外の) ロケーションにインストールしているか、または他の定義サービスのうちの 1 つを使用したければ、ブローカー・システム上のサービス JAR ファイルのロケーションを指示するように jarsURL プロパティーを設定する必要があります。

    プロバイダーのプロパティーを表示するには mqsireportproperties コマンドを使用し、プロパティーを設定または変更するには mqsichangeproperties コマンドを使用します。

  • JMS プロバイダーに対して何もサービスが定義されていない場合や、既存の JMS プロバイダーに対して別のサービスを作成する場合、mqsicreateconfigurableservice コマンドを使用して、新規サービスを識別し、そのプロパティーを設定します。
  • ノードを構成するときは、「JMS プロバイダー名」プロパティーに対して事前定義されているサービスのリストから該当するサービスを選択するか、または新規サービスの名前を入力します。

メッセージ宛先モードの使用

JMSOutput ノードはメッセージ・プロデューサーと同じように機能して、以下のメッセージ・シナリオをサポートします。

データグラム・メッセージの送信

データグラム とは、内蔵タイプの、他に依存しないデータのエンティティーです。データグラムは、事前に行われるソースおよび宛先コンピューターの間の交換やトランスポート・ネットワークに依存せずに、ソースから宛先コンピューターにルーティングされるために十分な情報を備えています。 以下では、データグラム・メッセージを送信する方法について説明します。
  1. 「基本」 タブで、使用するメッセージ・モデルに応じてメッセージの宛先を設定します。以下のプロパティーの 1 つを有効な JNDI 管理対象オブジェクト名に設定します。
    • パブリケーション・トピック
    • 宛先キュー
  2. 「宛先へ応答」フィールドはブランクのままにします。
ノードは JNDI 管理対象オブジェクトの名前 (「パブリケーション・トピック」または「宛先キュー」のどちらかに指定したもの) を解決し、その JMS 宛先にメッセージを送信します。

応答メッセージの送信

メッセージの送信側が受信側に対してメッセージへの応答を希望する場合があります。その場合、JMSOutput メッセージは出力メッセージを応答として扱い、要求メッセージの JMSReplyTo プロパティーから得られた値に応じてそれをルーティングします。MbMessage の JMSReplyTo プロパティーの値を、例えば Compute ノードまたは JavaCompute ノードを使って変更することができます。このアクションにより、JMSOutput ノードからのメッセージの動的ルーティングが可能になります。 ノードは、MbMessage ツリーの JMSReplyTo フィールドに設定される JMS 宛先名にメッセージを送信します。

MbMessage ツリーの JMSReplyTo 値は、JNDI から解決される JMS 宛先の名前を表します。 以下に例を示します。
queue://QM_mn2/myJMSQueue4
この場合の値は、WebSphere MQ JMS プロバイダーの JMS 宛先の、JMS プロバイダー固有の表記になります。
解決済みの JMS 宛先名を指定することを望まない場合、JMSOutput ノードは、JMSReplyTo フィールドに JNDI 管理対象オブジェクト名を受け入れることもできます。ただし、ノードは、基礎となる JMS 宛先へのメッセージのルーティングを可能にするには、JNDI を通して管理対象オブジェクト名を事前に解決しておく必要があります。 この場合、JMSReplyTo フィールドの値の接頭部にストリング jndi:¥¥ を付ける必要があります。例えば以下のようにします。
jndi:¥¥jmsQ4
jmsQ4 は、JNDI 管理対象オブジェクトの名前です。

この方式を使用すると、JNDI で管理対象オブジェクトを検索する必要が生じるため、パフォーマンスに若干の影響を及ぼす可能性があります。

要求メッセージの送信

JMSOutput ノードは、要求を処理するメッセージ・コンシューマーからの応答を期待して、JMS 宛先にメッセージを送信することがあります。以下では、要求メッセージを送信する方法について説明します。
  1. 「基本」 タブで、使用するメッセージ・モデルに応じてメッセージの宛先を設定します。以下のプロパティーの 1 つを有効な JNDI 管理対象オブジェクト名に設定します。
    • パブリケーション・トピック
    • 宛先キュー
  2. 出力メッセージの JMSReplyTo 宛先は、ノードに渡される MbMessage ツリーの JMSReplyTo フィールドから取り込めます。 あるいは、「宛先に応答」ノード・プロパティーに設定する JNDI 管理対象オブジェクト名によってこの値をオーバーライドすることもできます。

    JMSOutput ノードが出力メッセージに JMSReplyTo プロパティーを動的に設定できるようにするには、「基本」 タブの 「宛先の応答」 フィールドをブランクのままにし、Compute ノードまたは JavaCompute ノードを使って MbMessage に JMSReplyTo 値を設定します。

ノードはまず、値を求めて MbMessage の JMSReplyTo フィールドを探します。 ノードが値を検出した場合、その値が出力メッセージの JMSReplyTo フィールドに渡されます。しかし、「基本」 タブの 「宛先に応答」 フィールドが指定されている場合、出力メッセージの JMSReplyTo プロパティーにあらかじめ設定されていたものがこの値でオーバーライドされます。これは、まず JNDI 管理対象オブジェクトの名前を解決した後で行われます。

ノードは JNDI 管理対象オブジェクトの名前 (「パブリケーション・トピック」または「宛先キュー」のどちらかに指定したもの) を解決し、その JMS 宛先にメッセージを送信します。

整合トランザクションの構成

メッセージ・フローに JMSOutput ノードを組み込む場合、「トランザクション・モード」で設定した値が、メッセージを同期点下で送信するかどうかを定義します。

  • トランザクション・モード」を「グローバル」に設定した場合、 メッセージは外部同期点調整の下 (WebSphere MQ 作業単位内) で送信されます。メッセージ・フローと同じインスタンスの出力ノードによってその後に送信されるメッセージは、 出力ノードがこの設定を明示的にオーバーライドしない限り、同期点の下に置かれます。
  • トランザクション・モード 」 を 「ローカル」に設定した場合、メッセージは JMSOutput ノードのローカル同期点制御の下で送信されます。 フロー内の出力ノードによってその後に送信されるメッセージは、 個々の出力ノードがメッセージをローカル同期点の下に置くように指定しない限り、 ローカル同期点の下には置かれません。
  • トランザクション・モード」を 「なし」に設定した場合、メッセージは同期点下で送信されません。 フロー内の出力ノードによってその後に送信されるメッセージは、 個々の出力ノードがメッセージを同期点の下に置くように指定しない限り、 同期点の下には置かれません。
外部同期点下でメッセージを送信する場合には、追加の構成ステップを実行する必要があります。これらのステップを適用する必要があるのは、特定の JMS プロバイダーのブローカーに JMSOutput または JMSInput が最初にデプロイされたときだけです。
  • 分散システムで、ブローカーの外部同期点コーディネーターは WebSphere MQ です。 「トランザクション・モード」が「グローバル」に設定されたメッセージ・フローをデプロイする前に、キュー・マネージャーの .ini ファイルを変更して、グローバルに調整されたトランザクションに加わる各 JMS プロバイダーのリソース・マネージャーに関する追加の定義を含めてください。
    • Windows platform Windows® システムで WebSphere MQ バージョン 5 をインストールしてある場合:
      1. WebSphere MQ Services を開始します。
      2. キュー・マネージャー名を右クリックして、「プロパティー」をクリックします。
      3. 「リソース」プロパティー・タブをクリックします。
      4. 「SwitchFile」プロパティーを以下の値に設定します。
        install_dir/bin/ JMSSwitch.dll
        XAOpenString=Initial Context,location JNDI,Optional_parms
        ThreadOfControl=THREAD
    • Windows platform Windows システムで WebSphere MQ バージョン 6.0 をインストールしてある場合 :
      1. WebSphere MQ Explorer を開始します。
      2. 左側のペインでキュー・マネージャー名を右クリックして、「プロパティー」をクリックします。
      3. 左側のペインで「XA リソース・マネージャー」をクリックします。
      4. 「SwitchFile」プロパティーを以下の値に設定します。
        install_dir/bin/ JMSSwitch.dll
        XAOpenString=Initial Context,location JNDI,Optional_parms
        ThreadOfControl=THREAD
      詳しくは、WebSphere MQ バージョン 6 インフォメーション・センター・オンラインの「System Administration Guide」セクション、あるいは WebSphere MQ ライブラリー Web ページのバージョン 5.3 ブックを参照してください。
    • Linux platformUNIX platform Linux® および UNIX® システムでは、JMS プロバイダーごとにスタンザをキュー・マネージャーの .ini ファイルに追加します。
      以下に例を示します。
      XAResourceManager:
      Name=Jms_Provider_Name 
      SwitchFile=/install_dir/bin/JMSSwitch.so
      XAOpenString=Initial Context,location JNDI,Optional_parms
      ThreadOfControl=THREAD
      ここで、
      名前
      JMS プロバイダーのリソース・マネージャーを識別する、インストール済み環境によって定義された名前です。
      SwitchFile
      ブローカーの bin ディレクトリーで提供される、JMSSwitch ライブラリーへのファイル・システム・パスです。
      XAOpenString には以下の値を指定できます。
      • Initial Context は、JMSInput ノードの基本プロパティー「初期コンテキスト・ファクトリー」に設定される値です。
      • location JNDI は、JMSInput ノードの基本プロパティー「JNDI のロケーション」に設定される値です。 この値には、先行キーワードの file://iiop://、または ldap:// を組み込む必要があります。
      以下のパラメーターはオプションです。
      • 「LDAP プリンシパル」は、mqsicreatebroker または mqsichangebroker コマンドを使用してブローカーに設定された値と一致します。
      • 「LDAP 信任状」は、mqsicreatebroker または mqsichangebroker コマンドを使用してブローカーに設定された値と一致します。
      • 「リカバリー接続ファクトリー名」は、 バインディング・ファイルで定義された JNDI 管理の接続ファクトリーです。 値が指定されていない場合、recoverXAQCF のデフォルト値をバインディング・ファイルに追加する必要があります。 どちらの場合も、リカバリー接続ファクトリーを初期コンテキスト・ファクトリーに関連した JMS プロバイダーの XA キュー接続ファクトリーとして定義する必要があります。

      オプション・パラメーターはコンマで区切られていて、定位置です。 そのため、存在しないパラメーターはコンマで表す必要があります。

      1. ブローカーのキュー・マネージャーの Java™ CLASSPATH 環境変数を更新して、xarecovery.jar への参照が含まれるようにします。例:
        install_dir/classes/xarecovery.jar
      2. ブローカーのキュー・マネージャーの Java PATH 環境変数を更新して、スイッチ・ファイルが存在する bin ディレクトリーを指定するようにします。例:
        install_dir/bin

      詳しくは、WebSphere MQ バージョン 6 インフォメーション・センター・オンラインの「System Administration Guide」セクション、あるいは WebSphere MQ ライブラリー Web ページのバージョン 5.3 ブックを参照してください。

      ブローカーと JMS プロバイダーの両方で同じキュー・マネージャーを使用するには、インストールされている WebSphere MQ が、必要最低レベルのバージョン 5.3 CSD12

    • z/OS platform z/OS® では、外部同期点マネージャーはリソース・リカバリー・サービス (RRS) です。 z/OS 上でサポートされる唯一の JMS プロバイダーは、WebSphere MQ JMS です。 z/OS 上で WebSphere MQ JMS に対してサポートされる唯一のトランスポート・オプションは、バインド・オプションです。

      JMS プロバイダーの同期点制御は、ブローカーのキュー・マネージャーの RRS 同期点調整によって管理されます。.ini ファイルを変更する必要はありません。

ターミナルの接続

JMSOutput ノードの In ターミナルを、ルーティングされるアウトバウンド・メッセージの元になるノードに接続します。

メッセージをさらに処理する場合、エラーを処理する場合、あるいはメッセージを追加の宛先に送信する場合は、JMSOutput ノードの Out ターミナルをメッセージ・フローの別のノードに接続します。

ターミナルおよびプロパティー

JMSOutput ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。ノードのプロパティーを「プロパティー」ダイアログに表示するには、ノードをダブルクリックするか、またはノードを右クリックしてから「プロパティー」をクリックします。 デフォルト値が定義されていないすべての必須プロパティーには、アスタリスクのマークが付きます。

JMSOutput ノードのターミナルについては、次の表に説明されています。
ターミナル 説明
In ノードが処理するメッセージを受け入れる入力ターミナル。
Failure エラーが発生した場合にメッセージがルーティングされる出力ターミナル。 「妥当性検査」プロパティーが設定されている場合でも、このターミナルに伝搬されるメッセージは妥当性検査が行われません。
Out WebSphere MQ キューからメッセージが正常に取り出された場合に、 メッセージがルーティングされる出力ターミナル。
Catch 例外がダウンストリームでスローされ、ノードによってキャッチされた場合に、メッセージがルーティングされる出力ターミナル。

以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、アスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能かどうかを示します (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できます)。

JMSOutput ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー M C デフォルト 説明
ノード名 いいえ いいえ ノード・タイプ、JMSOutput ノードの名前。
簡略説明 いいえ いいえ   ノードの簡単な説明
詳細説明 いいえ いいえ   メッセージ・フロー内のノードの目的を説明するテキスト
JMSOutput ノードの「JMS 接続」プロパティーについては、次の表に説明されています。
プロパティー M C デフォルト 説明
初期コンテキスト・ファクトリー はい はい com.sun.jndi.fscontext. RefFSContextFactory このプロパティーが JNDI ネーム・スペースの開始点です。 JMS アプリケーションは初期コンテキストを使用して、JMS プロバイダーの接続ファクトリーおよびキューまたはトピック・オブジェクトを取得および検索します。

「初期コンテキスト・ファクトリー」値を入力します。 JMS アプリケーションは初期コンテキストを使用して、JMS プロバイダーの JNDI 管理対象オブジェクトを取得および検索します。 デフォルト値は com.sun.jndi.fscontext.RefFSContextFactory であり、これは WebSphere MQ JMS プロバイダー用の、ファイル・ベースの初期コンテキスト・ファクトリーを定義します。

JMS プロバイダーの初期コンテキスト・ファクトリーの名前を識別するには、JMS プロバイダーの資料を参照してください。

ロケーション JNDI バインディング いいえ はい   バインディング・ファイルのシステム・パスまたは LDAP ロケーション。 バインディング・ファイルには、JMSOutput ノードで使用される JNDI 管理対象オブジェクトの定義が含まれています。
「ロケーション JNDI バインディング」の値を入力するとき、 それが以下の指示に従っていることを確認してください。
  • JMSOutput ノードを含むメッセージ・フローをデプロイする前に、バインディング・ファイルを作成します。
  • このフィールドには、バインディング・ファイルのファイル名を入力しないでください。
  • 認証の必要な LDAP ロケーションを指定した場合、LDAP プリンシパル (ユーザー ID) および LDAP 信任状 (パスワード) の両方を個別に構成してください。 これらの値は、ブローカー・レベルで構成されます。 これらの値の構成について詳しくは、mqsicreatebroker コマンドおよびmqsichangebroker コマンドを参照してください。
  • ストリング値には、以下のいずれかの先行キーワードを含める必要があります。
    • file://
    • iiop://
    • ldap://

JNDI 管理対象オブジェクトのバインディング・ファイルの作成方法については、JMS プロバイダーに付属の資料を参照してください。

接続ファクトリー名 いいえ はい   JMSOutput ノードによって JMS プロバイダーへの接続を作成するために使用される、接続ファクトリーの名前。この名前は、バインディング・ファイル内にすでに存在している必要があります。
JMSOutput ノードの拡張プロパティーについては、次の表に説明されています。
プロパティー M C デフォルト 説明
新規相関 ID いいえ はい   メッセージ用の新規の相関 ID を生成するのに JMSOutput ノードが必要な場合、「新規相関 ID」を選択します。 チェック・ボックスをクリアしたままにした場合は、メッセージ・ツリーの JMSTransport_Header_Values セクション内の JMSCorrelationID フィールドから、出力メッセージの相関 ID が取り込まれます。
トランザクション・モード はい いいえ なし このプロパティーは、着信メッセージを同期点下で受信するかどうかを制御します。
  • 出力メッセージを非持続として扱う場合は、「なし」を選択します。 この値を選択する場合、メッセージは Session.AUTO_ACKNOWLEDGE フラグを使用して作成された未トランザクションの JMS セッションを使用して送信されます。
  • メッセージを受信した入力ノードが、JMSOutput ノードによって送信された JMS メッセージのコミットまたはロールバックを、メッセージ・フロー内で作業を行う DB2® や WebSphere MQなどの他のリソースとの間で調整する必要がある場合、「ローカル」を選択します。 この値を選択する場合、ノードはトランザクションの JMS セッションを使用します。
  • JMSOutput ノードがブローカーの外部同期点コーディネーターによって管理されるグローバル・メッセージ・フロー・トランザクションに参加する必要がある場合には、「グローバル」 を選択します。外部同期点コーディネーターは、ブローカーの分散システム上のキュー・マネージャー、 および z/OS 上の RRS (リソース・リカバリー・サービス) です。この値を選択する場合、ノードによって受信されたすべてのメッセージは XA JMS セッションを使用してグローバルに調整されます。
デリバリー・モード いいえ はい 非持続 このプロパティーは、JMS プロバイダーがメッセージに使用する持続モードを制御します。有効な値は以下のとおりです。
  • 「自動」: 入力メッセージのモードが継承されます。
  • 「持続」: JMS プロバイダーにシステム障害がある場合、メッセージは存続します。
  • 「非持続」: JMS プロバイダーにシステム障害がある場合、メッセージは失われます。
メッセージ有効期限 (ms) いいえ はい 0 このプロパティーは、JMS プロバイダーが出力 JMS メッセージを保持する期間をミリ秒単位で制御します。デフォルト値の 0 は、メッセージの有効期限が切れないことを示します。
メッセージ優先順位 いいえ はい 4 このプロパティーはメッセージに相対重要度を割り当て、受信 JMS クライアント・アプリケーションまたは JMSOutput ノードによるメッセージ選択に使用できます。

メッセージ優先順位として有効な値は、0 (最低優先順位) から 9 (最高優先順位) までです。デフォルト値は、中間の優先順位を示す 4 です。 0 から 4 までの範囲の優先順位は、通常の配信に関連したものです。5 から 9 までの範囲の優先順位は、急ぎの配信のための目盛りです。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009. All Rights Reserved.
最終更新 : 2009-02-13 10:23:00

ac24830_