JMSQueueシステムからストリームとして読み込みます。
連携時の設定方法の参考情報として、下記トピックで「IBM Websphere MQを使用する場合の設定方法」を説明します。
| 入力 | フォーマット | すべて |
|---|---|---|
| 接続数 | 1 | |
| 説明 | 入力ストリームは使用せず、すべて無視します。 | |
| 出力 | フォーマット | すべて |
| 説明 | 読み込んだストリームの種類に応じて設定します。 |
| 名前 | データ型 | 説明 |
|---|---|---|
| JMSDestination | string | 配信先 |
| JMSDeliveryMode | integer | 永続化フラグ |
| JMSMessageID | string | メッセージの識別値 |
| JMSTimestamp | integer | メッセージが送信された時間 |
| JMSExpiration | integer | メッセージの有効期限(1970年1月1日からのミリ秒数) |
| JMSRedelivered | boolean | 再配信されたメッセージならtrue |
| JMSPriority | integer | メッセージの優先順位 |
| JMSReplyTo | string | 返信先を表わす任意の情報 |
| JMSCorrelationID | string | 任意の識別子 |
| JMSType | string | 任意の情報 |
| 名前 | プロパティ型 | マッピング | 説明 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| コネクション名 | connection | - | 接続先のキューを指定します。 コネクションペインまたは管理コンソールにて作成されたQueue(JMS)接続名を選択します。 | ||||||
| キュー名 | string | 入力&出力 | 読み込むキューの名前を指定します。 | ||||||
| 選択条件 | string | 入力&出力 |
SQLのWHERE句に似た文法を指定してメッセージを選別します。 通常は、キューシステムで決められたプライオリティに応じた順番でメッセージを取得しますが、Selectionを指定することによりある条件に応じたメッセージだけを取得することが可能になります。 例えば、メッセージプロパティに"Age"と"Name"という値をセットしておいて、"Age < 30 AND Name='name1'"と指定するとAgeが30未満でNameがname1のメッセージだけを取得することができます。 LIKE BETWEEN INなども使用できるので以下のような文も可能です。 Name LIKE 'name1 %' Age BETWEEN 20 and 30 Name IN ('name1', 'name2', 'name3') |
||||||
| 読込み件数 | int | 入力&出力 | JMSQueueシステムに複数のメッセージが溜まっている時に、いくつ読み込むか指定します。「0」の場合はすべてのメッセージを取り出します。 | ||||||
| タイムアウト(ミリ秒) | int | 入力&出力 | JMSQueueシステムにメッセージが溜まっていない時に、待つ時間をミリ秒で指定します。 | ||||||
| ループを開始 | loopProcess | - |
結果をまとめて出力するか、読込み件数での指定回数ループして出力するかを選択します。
|
| コミット | メッセージが取得されたことが確定する |
|---|---|
| ロールバック | メッセージが取得されていない状態に戻される |
| タイプ | パラ メータ | エラー処理フロー へのストリーム | エラー コード | 説明 |
|---|---|---|---|---|
| メッセージが存在しない | なし | コンポーネントの入力ストリーム | なし | キューにメッセージがなかった場合 |
| 汎用 | なし | コンポーネントの入力ストリーム | なし | JNDIサーバーとの接続に失敗した場合 |
| なし | JMSプロバイダとの接続に失敗した場合 | |||
| なし | メッセージの読み込みに失敗した場合 |
QueuePutコンポーネントはストリーム型に応じて出力するメッセージタイプが決まっています。
QueueGetコンポーネントはメッセージタイプに応じて復元できるストリーム型が決まっています。
| QueuePut | QueueGet | |
|---|---|---|
| XML | BytesMessage | BytesMessage |
| CSV | BytesMessage | BytesMessage/TextMessage |
| FixedLength | BytesMessage | BytesMessage |
| ParameterList | BytesMessage/MapMessage (UseMapMessageプロパティの指定に従う) | BytesMessage/MapMessage |
| Text | TextMessage | BytesMessage/TextMessage |
| HTML | TextMessage | BytesMessage/TextMessage |
| Binary | BytesMessage | BytesMessage |
| MIME | BytesMessage | BytesMessage |
| Record | BytesMessage | BytesMessage |
ParamterListストリームは、QueuePutコンポーネントではUseMapMessageプロパティがtrueの場合MapMessage、falseの場合BytesMessageとして出力します。QueueGetコンポーネントでは、BytesMessageまたはMapMessageから復元することが可能です。
QueueGetコンポーネントでBytesMessageから復元する場合、適宜決まったフォーマットになっていなければ復元はできません。例えばXMLストリームならばBytesMessageの中にXMLのバイト列が入っていなければ復元不可能です。
本コンポーネントからIBM WebSphere MQにアクセスする場合の設定方法を以下に説明します。
現在フローサービスからのMQへのアクセスがサポートされるものは以下の通りです。
以下の作業がインストール時に一度だけ必要になります。
各手順の詳細を以下に説明します。
MQのマニュアルに従ってインストールします。標準インストールではJMSサービスのインストールがOFFになっている可能性があるため、カスタムインストールでJMSサービスを有効にしてインストールします。
MQのインストールディレクトリ(以降、[MQ_Install]と表記します)のjava/libディレクトリにある、以下のJavaライブラリをフローサービスのディレクトリにコピーします。コピー先のフローサービスのディレクトリは
[INSTALL_DIR]/flow/lib/extとなります。コピー先に同じファイルがある場合は上書きしてください。OpenJMS用のライブラリは削除しておくことを推奨します。
Windows − C:\Program Files\IBM\WebSphere MQ AIX − /usr/mqm Linux − /opt/mqm
フローサービスを実行するアカウントからMQにアクセスできるよう、適宜アカウントの設定を変更します。AIX, Linuxの場合はフローサービスの実行アカウントがmqmグループに所属するようにします。Windowsでフローサービスの実行アカウントがドメインユーザである場合は、domain mqmドメイングループに所属するようにします。詳しくはMQのマニュアルを参照してください。
コピーされたライブラリがフローサービスで有効になります。
[MQ_Install]/java/binにあるJMSAdmin.configファイルを編集し、JNDIの設定を行います。通常は「INITIAL_CONTEXT_FACTORY」と「PROVIDER_URL」の設定を行うことになります。
たとえば、ファイルシステムにJNDIのバインディング情報を置く場合には、
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory PROVIDER_URL=file:/C:[MQ_Install]のように設定します。
管理コンソールにログインし、[設定]-[コネクション]-[その他]のメニューからJNDIコネクションを作成します。「Provider URL」「Initial Factory」項目にMQ上のJMSAdmin.configファイルに指定した値を設定します。
以下の作業がMQでキューを作成するたびに毎回必要になります。
各手順の詳細を以下に説明します。
MQ上で作成したキューマネージャ、キューをJMSに登録します。
[MQ_Install]/java/binにあるJMSAdminツールを起動すると、以下のようにプロンプトが表示されるので、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にクライアントモードで接続する場合
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> endMQにおけるキューマネージャ、キューの作成方法、クライアント接続のための設定方法、JMSAdminの使い方などの詳細はMQのマニュアルを参照してください。
管理コンソールにログインし、[設定]-[コネクション]-[その他]のメニューからQueueコネクションを作成します。「JNDI接続名」項目にあらかじめ指定しておいたJNDIコネクションの値設定します。「Queue Connection Factory」項目にJMSAdminで定義した値を設定します。
以上で本コンポーネントからJMSAdminで定義したキューにアクセスできるようになります。