QueuePut - JMSQueueへの出力

JMSQueueシステムにストリームを書き出します。

連携時の設定方法の参考情報として、下記トピックで「IBM Websphere MQを使用する場合の設定方法」を説明します。

■ストリーム情報

入力フォーマットすべて
接続数1
説明すべてのストリームを入力できます。
出力フォーマットすべて
説明 入力ストリームをそのまま出力します。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
コネクション名connection- 接続先のキューを指定します。 コネクションペインまたは管理コンソールにて作成されたQueue(JMS)接続名を選択します。
各コネクションの詳細については、「はじめに」-「詳細なトピック」-「フローの構成要素」-「コネクションプロパティ」を参照してください。
キュー名string入力&出力 書き出すキューの名前を指定します。
メッセージの優先順位int入力&出力 書き出すメッセージのプライオリティを指定します。
数値が大きいほど優先順位が高くなります。0〜9まで指定可能です。
有効期間(ミリ秒)int入力&出力 いつまでキューに残しておくか有効期間をミリ秒で指定します。
0を指定すると永久に残ります。
メッセージを永続化choice入力&出力 書き出すメッセージを永続化するかどうか指定します。
はい [Persistent] - 永続化します。
いいえ [NonPersistent] - 永続化しません。
MapMessageを使用boolean入力&出力 ParameterListストリームに対してMapMessageを使用するかどうか指定します。
メッセージプロパティcategory入力&出力 メッセージに付帯情報として名前と値をセットします。
この値を使用してQueueGetコンポーネントの選択条件 でメッセージを選別することなどが可能になります。
名前は自由につけることが可能ですが、"JMS"から始まる語とJMSで予約されている語(NOT AND OR BETWEEN LIKE IN IS NULL TRUE FALSE)は使用できません。
以下の名前を使用すると、対応するJMSメッセージヘッダーに値が設定されます。
名前
JMSCorrelationID任意の識別子
JMSType任意の情報

■ループ処理

なし。

■トランザクション処理

コミットメッセージを書き出したことが確定する
ロールバックメッセージを書き出す前の状態に戻される

■エラー処理

タイプパラメーターエラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム なし JNDIサーバーとの接続に失敗した場合
なし JMSプロバイダとの接続に失敗した場合
なし メッセージの書き出しに失敗した場合

■MessageType

QueuePutコンポーネントはストリーム型に応じて出力するメッセージタイプが決まっています。

QueueGetコンポーネントはメッセージタイプに応じて復元できるストリーム型が決まっています。

QueuePutQueueGet
XMLBytesMessageBytesMessage
CSVBytesMessageBytesMessage/TextMessage
FixedLengthBytesMessageBytesMessage
ParameterListBytesMessage/MapMessage
(MapMessageを使用 プロパティの指定に従う)
BytesMessage/MapMessage
TextTextMessageBytesMessage/TextMessage
HTMLTextMessageBytesMessage/TextMessage
JSONTextMessageBytesMessage/TextMessage
BinaryBytesMessageBytesMessage
MIMEBytesMessageBytesMessage
RecordBytesMessageBytesMessage

ParamterListストリームは、QueuePutコンポーネントではMapMessageを使用 プロパティがはいの場合MapMessage、いいえの場合BytesMessageとして出力します。QueueGetコンポーネントでは、BytesMessageまたはMapMessageから復元することが可能です。

QueueGetコンポーネントでBytesMessageから復元する場合、適宜決まったフォーマットになっていなければ復元はできません。例えばXMLストリームならばBytesMessageの中にXMLのバイト列が入っていなければ復元不可能です。

■IBM MQを使用する場合の設定方法

本コンポーネントからIBM MQにアクセスする場合の設定方法を以下に説明します。

インストール時の事前設定

以下の作業がインストール時に一度だけ必要になります。

  1. フローサービスのマシンにMQサーバーまたはMQクライアントをインストールする
  2. フローサービスにMQのJavaライブラリをコピーする
  3. フローサービスの実行アカウントにMQの実行権限を与える
  4. フローサービスを再起動する
  5. MQ上でJMSのJNDI初期設定を行う
  6. フローサービスでJNDIコネクションを作成する

各手順の詳細を以下に説明します。

1. フローサービスのマシンにMQサーバまたはMQクライアントをインストールする

MQのマニュアルに従ってインストールします。標準インストールではJMSサービスのインストールがOFFになっている可能性があるため、カスタムインストールでJMSサービスを有効にしてインストールします。

2.フローサービスにMQのJavaライブラリをコピーする

MQのインストールフォルダー(以降、[MQ_Install]と表記します)のjava/libフォルダーにある、以下のJavaライブラリをフローサービスのフォルダーにコピーします。コピー先のフローサービスのフォルダーは

[DATA_DIR]/system/lib/ext
となります。コピー先に同じファイルがある場合は上書きしてください。OpenJMS用のライブラリは削除しておくことを推奨します。
以下のJavaライブラリはMQ 9.4の場合の例となります。詳しくはMQのヘルプより再配置可能ライブラリをご確認ください。 補足:MQのインストールフォルダー(デフォルト)
Windows − C:\Program Files\IBM\MQ
Linux   − /opt/mqm

3.フローサービスの実行アカウントにMQの実行権限を与える

フローサービスを実行するアカウントからMQにアクセスできるよう、適宜アカウントの設定を変更します。Linuxの場合はフローサービスの実行アカウントがmqmグループに所属するようにします。Windowsでフローサービスの実行アカウントがドメインユーザーである場合は、domain mqmドメイングループに所属するようにします。詳しくはMQのマニュアルを参照してください。

4.フローサービスを再起動する

コピーされたライブラリがフローサービスで有効になります。

5.MQ上でJMSのJNDI初期設定を行う

[MQ_Install]/java/binにあるJMS30Admin.configファイルを編集し、JNDIの設定を行います。通常は「INITIAL_CONTEXT_FACTORY」と「PROVIDER_URL」の設定を行うことになります。 たとえば、ファイルシステムにJNDIのバインディング情報を置く場合には、

INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/C:[MQ_Install]
のように設定します。

6.フローサービスでJNDIコネクションを作成する

管理コンソールにログインし、[設定]-[コネクション]-[その他]のメニューからJNDIコネクションを作成します。「Provider URL」「Initial Factory」項目にMQ上のJMS30Admin.configファイルに指定した値を設定します。

キュー作成時の事前設定

以下の作業がMQでキューを作成するたびに毎回必要になります。

  1. MQ上でキューをJMSに登録する
  2. フローサービスでQueueコネクションを作成する

各手順の詳細を以下に説明します。

1.MQ上でキューをJMSに登録する

MQ上で作成したキューマネージャ、キューをJMSに登録します。
[MQ_Install]/java/binにあるJMS30Adminツールを起動すると、以下のようにプロンプトが表示されるので、MQへの接続方法に合わせて定義を登録します。

InitCtx>
以下にフローサービスで使用するQueueコネクション名を「QCFNAME」、キュー名を「QNAME」とする場合の設定例を示します。
ローカルマシンのデフォルトのキューマネージャ、デフォルトのローカルキューにバインドモードで接続する場合:
InitCtx> define qcf(QCFNAME)
InitCtx> define q(QNAME) queue(SYSTEM.DEFAULT.LOCAL.QUEUE)
InitCtx> end
ローカルマシンのデフォルトのキューマネージャ、ローカルキューQUEUE1にバインドモードで接続する場合:
InitCtx> define qcf(QCFNAME)
InitCtx> define q(QNAME) queue(QUEUE1)
InitCtx> end
ローカルマシンのキューマネージャQM1、ローカルキューQUEUE1にバインドモードで接続する場合:
InitCtx> define qcf(QCFNAME) qmgr(QM1)
InitCtx> define q(QNAME) queue(QUEUE1) qmgr(QM1)
InitCtx> end
リモートマシンHOST1のキューマネージャQM1、ローカルキューQUEUE1にクライアントモードで接続する場合
(クライアント接続用のチャネルがCHANNEL1、ポート番号が1414、文字コードセットIDが932の場合):
InitCtx> define qcf(QCFNAME) qmgr(QM1) tran(CLIENT) host(HOST1) chan(CHANNEL1) port(1414) ccsid(932)
InitCtx> define q(QNAME) queue(QUEUE1) qmgr(QM1)
InitCtx> end
MQにおけるキューマネージャ、キューの作成方法、クライアント接続のための設定方法、JMS30Adminの使い方などの詳細はMQのマニュアルを参照してください。

2.フローサービスでQueueコネクションを作成する

管理コンソールにログインし、[設定]-[コネクション]-[その他]のメニューからQueueコネクションを作成します。「JNDI接続名」項目にあらかじめ指定しておいたJNDIコネクションの値設定します。「Queue Connection Factory」項目にJMS30Adminで定義した値を設定します。

以上で本コンポーネントからJMS30Adminで定義したキューにアクセスできるようになります。