JMSReceive ノードを使用して、メッセージ・フローの途中で JMS キューからメッセージを受信します。 JMS プロバイダーへの接続を介して JMS キューにアクセスします。
このトピックには、以下のセクションが含まれています。
JMSReceive ノードは JMS メッセージ・コンシューマーと同じように機能して、Java™ Message Service Specification、バージョン 1.1 で定義された 6 つのメッセージ・タイプのすべてを受け取ることができます。
JMSReceive ノードはパレットの JMS ドロワーに含まれていて、WebSphere® Message Broker Toolkit では次のアイコンによって表されます。
JMSReceive ノードは、JMS メッセージ・ツリーと共に、メッセージを受け取り、伝搬します。 メッセージ・フロー内の最初のノードとしてのみ使用できる JMSInput ノードとは異なり、JMSReceive ノードはメッセージ・フローの途中で使用できます。 JMSReceive ノードからの出力メッセージ・ツリーは、受信された JMS メッセージの結果ツリーを入力ツリーと結合することによって構成されます。 結果プロパティー・パネルを使用することで、入力メッセージのどのデータを結果ツリーに結合するかを指定できます。
JMSReceive ノードのプロパティーを設定すると、JMS メッセージの受信方法を制御できます。
JMSReceive ノードは同期的であるため、定義された JMS キューからメッセージを受け取るまではメッセージ・フローをブロックします。 指定されたタイムアウト期間内にメッセージが受信されない場合、No Message 出力ターミナルに入力メッセージが伝搬されます。 タイムアウトの値が 0 である場合、ノードは JMS メッセージの受信を無期限に待たないため、次のメッセージが直ちに入手可能な場合にのみ、それを受信します。
JMS プロバイダーへの接続から受け取ったメッセージを処理するメッセージ・フローの場合、JMSInput ノードを使ってそれを開始するか、フローの途中に JMSReceive ノードを組み込むことができます。 JMSReceive ノードを含むメッセージ・フローに出力ノードを組み込む場合は、サポートされる任意の出力ノード (ユーザー定義の出力ノードを含む) を使用できます。JMSOutput ノードを組み込む必要はありません。
JMSReceive ノードは、JMS キューとの Point-to-Point シナリオだけを扱います。 トピックにサブスクライブするには、JMSInput ノードを使用してください。
サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。
多数の JMS プロバイダー用の構成可能サービスが定義されています。 事前定義サービスのうちの 1 つを選択できますが、新規プロバイダーまたは既存プロバイダーのうちの 1 つのためのサービスを作成することもできます。 事前定義サービスは構成可能サービスのプロパティーにリストされています。
プロバイダーのプロパティーを表示するには mqsireportproperties コマンドを使用し、プロパティーを設定または変更するには mqsichangeproperties コマンドを使用します。
正常に受信したメッセージごとに、JMSReceive ノードはそのメッセージを Out ターミナルにルーティングします。 このアクションが失敗する場合、メッセージが再試行されます。 再試行しきい値に達した場合、メッセージは Failure ターミナルに経路指定されます。 ノードを Failure ターミナルに接続し、この状態を処理することができます。
「タイムアウト」プロパティーで指定されたタイムアウト期間内にノードが JMS キューからメッセージを受信できない場合、入力メッセージは No Message ターミナルに経路指定されます。
ブローカーまたは実行グループの再始動後に処理が再開されない場合は、ノード・プロパティー中で指定されているパーサーが誤っているなど、原因についてデプロイメント・ログを確認してください。 問題を訂正し、メッセージ・フローを再デプロイしてください。 メッセージ自体が無効な場合は、入力キューからメッセージを除去して、処理を再開してください。
メッセージ・フローに JMSReceive ノードを組み込む場合、「トランザクション・モード」で設定した値が、メッセージを同期点下で受信するかどうかを定義します。 整合 JMS トランザクションの構成を参照してください。
JMSReceive ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。 デフォルト値が定義されていないすべての必須プロパティーには、アスタリスクのマークが付きます。
ターミナル | 説明 |
---|---|
Failure | エラーが発生した場合にメッセージがルーティングされる出力ターミナル。 「妥当性検査」プロパティーが設定されている場合でも、このターミナルに伝搬されるメッセージは妥当性検査が行われません。 |
Out | 正常に受信されたメッセージの送付先となる出力ターミナル。 |
メッセージなし | キューにメッセージが存在しない場合、入力メッセージがルーティングされる出力ターミナル。 No Message ターミナルに伝搬される出力メッセージは、入力メッセージから構成されます。 |
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、アスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | ノード・タイプ、JMSReceive | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
ソース・キュー | いいえ | はい | 選択されている | ノードが着信メッセージを受け取るキューの名前。 | sourceQueueName |
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
JMS プロバイダー名 | はい | いいえ | WebSphere MQ | リストから JMS ベンダー名を選択するか、または独自に選択した名前を入力します。 リストから名前を選択すると、「初期コンテキスト・ファクトリー」プロパティーが、関連する Java クラスを使用して自動的に更新されます。 独自の JMS プロバイダー名を使用する場合、「初期コンテキスト・ファクトリー」 の値も入力する必要があります。その名前は、メッセージ・フローのデプロイ先のブローカーに対して定義されている構成可能サービスの名前に一致しなければなりません。 あるいは、JMSProviders 構成可能サービスを指定することができます。 | |
初期コンテキスト・ファクトリー | いいえ | はい | com.sun.jndi.fscontext. RefFSContextFactory | JNDI ネーム・スペースの開始点。 JMS アプリケーションは初期コンテキストを使用して、JMS プロバイダーの接続ファクトリーおよびキューまたはトピック・オブジェクトを取得および検索します。 「JMS プロバイダー名」のリストから JMS プロバイダー名を選択すると、関連する Java クラスに基づいて「初期コンテキスト・ファクトリー」プロパティーが自動的に更新されます。 独自の JMS プロバイダー名を使用する場合、「初期コンテキスト・ファクトリー」 の値も入力する必要があります。 デフォルト値は com.sun.jndi.fscontext.RefFSContextFactory であり、これは WebSphere MQ JMS プロバイダー用の、ファイル・ベースの初期コンテキスト・ファクトリーを定義します。 独自の JMS プロバイダーを使用するようにノードを設定した場合に、mqsichangeproperties 定義の対応する構成可能サービス・プロパティーで InitialContextFactory 属性を設定すると、この属性によってノードの設定が指定変更されます。 |
initialContextFactory |
ロケーション JNDI バインディング | いいえ | はい | バインディング・ファイルのシステム・パスまたは LDAP ロケーション。 バインディング・ファイルには、JMSReceive ノードで使用される JNDI 管理対象オブジェクトの定義が含まれています。 「ロケーション JNDI バインディング」の値を入力するとき、それが以下の指示に従っていることを確認してください。
JNDI 管理対象オブジェクトのバインディング・ファイルの作成方法については、JMS プロバイダーの資料を参照してください。 独自の JMS プロバイダーを使用するようにノードを設定した場合に、mqsichangeproperties 定義の対応する構成可能サービス・プロパティーで jndiBindingsLocation 属性を設定すると、この属性によってノードの設定が指定変更されます。 |
locationJndiBindings | |
接続ファクトリー名 | いいえ | はい | JMSReceive ノードによって JMS プロバイダーへの接続を作成するために使用される、接続ファクトリーの名前。 この名前は、バインディング・ファイル内に存在している必要があります。 | connectionFactoryName | |
タイムアウト | はい | はい | 2000 | JMS キューからのメッセージを JMSReceive ノードが取り込むまで待機する最大時間をミリ秒で示します。 「タイムアウト」プロパティーを設定することで、メッセージの受信を待機するミリ秒数を指定します。 「タイムアウト」を負の値にすることはできません。 値 0 を指定した場合、ノードはメッセージが入手可能になるのを待たないため、次のメッセージが直ちに入手可能な場合にのみ、それを受信します。 値を指定しない場合、デフォルト値の 2000 ミリ秒が使用されます。 |
receiveTimeout |
MRM、XMLNSC、XMLNS、MIME、BLOB、XML、および JSON ドメインの JMSReceive ノードの「応答メッセージの構文解析」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
メッセージ・ドメイン | いいえ | いいえ | 外部リソースから提供されるビット・ストリームのメッセージを構文解析するために使われるドメイン。 | |
メッセージ・セット | いいえ | いいえ | 応答メッセージが定義されているメッセージ・セットの名前。 | |
メッセージ・タイプ | いいえ | いいえ | 応答メッセージの名前。 | |
メッセージ形式 | いいえ | いいえ | 応答メッセージの物理フォーマットの名前。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
構文解析のタイミング | はい | いいえ | 要求時 | このプロパティーは、いつ応答メッセージを解析するかを制御します。 有効な値は以下のとおりです。
|
XML スキーマ・データ・タイプを使用してツリーを構築する | はい | いいえ | 選択されていない | このプロパティーは、XML スキーマから取得されたデータ・タイプを使って、XMLNSC パーサーがメッセージ・ツリー内に構文エレメントを作成するかどうかを制御します。 「妥当性検査」を 「内容」 または 「内容と値」 に設定した場合にのみ、このプロパティーを選択できます。 |
XMLNSC コンパクト・パーサーを XMLNS ドメインに使用 | はい | いいえ | 選択されていない | このプロパティーは、XMLNS ドメイン内のメッセージに XMLNSC コンパクト・パーサーを使用するかどうかを制御します。 このプロパティーを設定した場合に、入力 MQRFH2 ヘッダーまたは「入力メッセージの構文解析」プロパティー「メッセージ・ドメイン」を XMLNS にすると、出力ターミナルに接続されているノードの XMLNSC の下に応答メッセージ・データが表示されます。 |
混合内容の保存 | はい | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが応答メッセージ内で混合テキストを検出したときに、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、混合テキスト用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、混合テキストは無視されて、エレメントは作成されません。 |
コメントの保存 | はい | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが応答メッセージ内でコメントを検出したときに、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、コメント用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、コメントは無視されて、エレメントは作成されません。 |
処理命令の保存 | はい | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが応答メッセージ内で処理命令を検出したときに、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、処理命令用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、処理命令は無視されて、エレメントは作成されません。 |
不透明エレメント | いいえ | いいえ | ブランク | XMLNSC パーサーによって不透明解析される入力メッセージ内のエレメントのリストを指定するときに、このプロパティーを使用します。 不透明解析が実行されるのは、妥当性検査が使用不可に設定されている場合のみ (つまり、「妥当性検査」が「なし」の場合) です。妥当性検査が使用可能な場合、「不透明エレメント」で指定される項目は無視されます。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
アプリケーション・プロパティー | いいえ | いいえ | アプリケーションのプロパティー値に応じてメッセージをフィルター操作するメッセージ・セレクター。 発信元の JMS クライアント・アプリケーションによって設定されたメッセージ・プロパティーに基づいて JMS プロバイダーがメッセージをフィルターに掛ける必要がある場合、「アプリケーション・プロパティー」のセレクター・ストリングを入力して、プロパティー名と選択条件 (例えば、OrderValue > 200) の両方を指定します。 ノードがアプリケーション・プロパティーに基づいて選択しないようにする場合は、「アプリケーション・プロパティー」をブランクのままにしてください。 |
|
タイム・スタンプ | いいえ | いいえ | JMSTimestamp に応じてメッセージをフィルター操作するメッセージ・セレクター。 JMS プロバイダーが、特定の時期に生成されたメッセージをフィルター操作する必要がある場合、「タイム・スタンプ」 のセレクター・ストリングを入力します。この値は、修飾されていない Java ミリ秒で、例えば 105757642321 となります。 セレクターを =、BETWEEN や AND などの演算子で修飾します。 ノードが JMSTimeStamp に基づいて選択しないようにする場合は、「タイム・スタンプ」をブランクのままにしてください。 |
|
デリバリー・モード | いいえ | いいえ | すべて | メッセージ・デリバリー・モードに応じてメッセージをフィルター操作するメッセージ・セレクター。 JMS プロバイダーが、JMS メッセージ内の JMSDeliveryMode ヘッダー値に基づいてメッセージをフィルター操作する必要がある場合、「デリバリー・モード」のオプションをリストから選択します。
|
優先順位 | いいえ | いいえ | メッセージ優先順位に応じてメッセージをフィルター操作するメッセージ・セレクター。 JMS プロバイダーが、JMS メッセージ内の JMSPriority ヘッダー値に基づいてメッセージをフィルター操作する必要がある場合、「優先順位」のセレクター・ストリングを入力します。 「優先順位」として有効な値は、0 (最低) から 9 (最高) までです。 例えば、= 5 を入力すると優先順位 5 のメッセージを受け取り、> 4 を入力すると優先順位が 4 より上のメッセージを受け取り、BETWEEN 4 AND 8 と入力すると優先順位が 4 から 8 までの範囲のメッセージを受け取ります。 ノードが JMSPriority に基づいて選択しないようにする場合は、「優先順位」をブランクのままにしてください。 |
|
メッセージ・タイプ | いいえ | いいえ | メッセージ・タイプに応じてメッセージをフィルター操作するメッセージ・セレクター。 JMS メッセージ内の JMSType ヘッダー値に基づいて JMS プロバイダーでメッセージをフィルター操作する必要がある場合、「メッセージ・タイプ」のセレクター・ストリングを入力してください。 「メッセージ・タイプ」として有効な値は、次のとおりです。
ノードで JMSType に基づく選択を行わないようにするには、「メッセージ・タイプ」をブランクのままにしてください。 |
|
メッセージ ID | いいえ | いいえ | メッセージ ID に応じてメッセージをフィルター操作するメッセージ・セレクター。 JMS プロバイダーが、JMSMessageID ヘッダー値に基づいてメッセージをフィルター操作する必要がある場合、「メッセージ ID」のセレクター・ストリングを入力します。 例えば、>WMBRK123456 と入力すると、メッセージ ID が WMBRK123456 よりも大きいメッセージが戻されます。 ノードが JMSMessageID に基づいて選択しないようにする場合は、「メッセージ ID」をブランクのままにしてください。 |
|
再送 | いいえ | いいえ | JMS プロバイダーが、JMSRedelivered ヘッダーに基づいてメッセージをフィルター操作する必要がある場合、「再送」 のセレクター・ストリングを入力します。
|
|
相関 ID | いいえ | いいえ | 相関 ID に応じてメッセージをフィルター操作するメッセージ・セレクター。 JMS プロバイダーが、JMSCorrelationID ヘッダー値に基づいてメッセージをフィルター操作する必要がある場合、「相関 ID」 のセレクター・ストリングを入力します。 例えば、= WMBRKABCDEFG は相関 ID がこの値と一致するメッセージを戻します。 ノードが JMSCorrelationID に基づいて選択しないようにする場合は、「相関 ID」をブランクのままにしてください。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
トランザクション・モード | はい | いいえ | 自動 | このプロパティーは、メッセージを JMS トランザクション下で出力するかどうかを制御します。 有効な値は「はい」、「いいえ」、および「自動」です。 非トランザクション JMS セッションを使用してメッセージを出力するには、「いいえ」 を選択します。 トランザクション JMS セッションを使用してメッセージを出力するには、「はい」 を選択します。 JMS トランザクションは、ローカルまたは XA 整合のどちらかが可能です。 XA JMS セッションを使用して XA 整合トランザクションを使用するには、BAR ファイル・プロパティーで、「メッセージ・フロー」プロパティーの「整合トランザクション」を選択する必要もあります。 メッセージのトランザクション性を、フロー開始時の入力ノードの「トランザクション・モード」設定から継承する場合は、「自動」を選択します。 整合 JMS トランザクションの構成を参照してください。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
参照のみ | いいえ | いいえ | 選択されていない | この boolean プロパティーは、メッセージを取り込むか、それとも参照するかを制御します。 メッセージを参照する場合、ノードはメッセージを読み取りますが、キューからそれを除去することはありません。 このプロパティーを選択した場合、「トランザクション・モード」が使用不可になり、参照でトランザクション特性が使用されなくなります。 |
参照のリセット | いいえ | いいえ | 選択されていない | この boolean プロパティーは、JMSReceive ノードでの参照動作を決定します。 このプロパティーを選択した場合、ノードはキューの最初からメッセージを参照します。 このプロパティーをクリアした場合、ノードはキュー内の現在の位置からメッセージを参照します。 キュー内の参照位置をリセットします。 このプロパティーをクリアした場合、後続の参照操作では、キュー内の次のメッセージが参照されます。 このプロパティーを選択した場合、ノードはキューの最初から参照を行い、キューから取り込まれる場合と同じメッセージを参照します。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
出力データのロケーション | いいえ | いいえ | $OutputRoot | JMSReceive ノードから送られる出力の宛先となる出力メッセージ・ツリー上の位置。 入力ルートが最初に出力ルートにコピーされた後、「出力データのロケーション」で指定された出力ツリー上の場所に結果データがコピーされます。 デフォルト値 $OutputRoot は、コピーされたメッセージ・ツリーを結果データで置き換え、入力メッセージはまったく伝搬されません。 例えば $OutputRoot/XMLNS/MyData という値の場合、メッセージ・ツリーをマージまたは上書きすることにより、結果メッセージ・データを出力メッセージ・ツリーの中に挿入します。 ESQL または XPATH 式として「出力データのロケーション」を指定することができます。 結果メッセージと着信メッセージの結合を参照してください。 |
結果データのロケーション | いいえ | いいえ | $ResultRoot | 出力メッセージの「出力データのロケーション」フィールドにコピーされる、JMS キューから受信されるメッセージ内の位置。 例えばデフォルト $ResultRoot の場合、出力ツリー内の「出力データのロケーション」で指定された位置に結果メッセージが挿入されます。 $ResultRoot/JMSMap/map/MyMapItem という値の場合、JMSMap メッセージ内の MyMapItem だけが、「出力データのロケーション」で指定された位置に書き込まれます。 ESQL または XPATH 式として「結果データのロケーション」を指定することができます。 結果メッセージと着信メッセージの結合を参照してください。 |
ローカル環境のコピー | いいえ | いいえ | 選択されている | このプロパティーは、ローカル環境が出力メッセージにコピーされるかどうかを指定します。
|
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
妥当性検査 | はい | はい | なし | このプロパティーは、妥当性検査を行うかどうかを制御します。 有効な値は以下のとおりです。
|
validateMaster |
失敗時の処置 | いいえ | いいえ | 例外 | このプロパティーは、妥当性検査が失敗した場合の動作を制御します。 「妥当性検査」を「内容」または「内容と値」に設定した場合にのみ、このプロパティーを設定できます。 有効な値は以下のとおりです。
|
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
イベント | いいえ | いいえ | なし | ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」、「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。 「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。 |
メッセージの他のエレメントに値を設定する方法と同じ方法で、ローカル環境の値を動的に指定変更できます。 ローカル環境の指定変更 (JMSReceive ノード)を参照してください。