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を指定することによりある条件に応じたメッセージだけを取得することが可能になります。 例えば、QueuePutコンポーネントのメッセージプロパティ に"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 | - |
結果をまとめて出力するか、読込み件数 での指定回数ループして出力するかを選択します。
|
||||||
| メッセージプロパティ | category | 入力&出力 |
メッセージに付帯されたJMSプロパティ情報を取得するための設定をします。
例えば、QueuePutコンポーネントのメッセージプロパティ で指定した値を取得することなどができます。 このプロパティは自動的にストリーム変数になります。 本コンポーネントの後に連結したマッパーで、ストリーム変数として見えるようになっています。ストリーム変数については、「はじめに」-「詳細なトピック」-「フローの構成要素」-「変数」-「ストリーム変数」を参照してください。 |
| コミット | メッセージが取得されたことが確定する |
|---|---|
| ロールバック | メッセージが取得されていない状態に戻される |
| タイプ | パラメーター | エラー処理フロー
へのストリーム | エラー
コード | 説明 |
|---|---|---|---|---|
| メッセージが存在しない | なし | コンポーネントの入力ストリーム | なし | キューにメッセージがなかった場合 |
| 汎用 | なし | コンポーネントの入力ストリーム | なし | 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 |
| JSON | 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 MQにアクセスする場合の設定方法を以下に説明します。
以下の作業がインストール時に一度だけ必要になります。
各手順の詳細を以下に説明します。
MQのマニュアルに従ってインストールします。標準インストールではJMSサービスのインストールがOFFになっている可能性があるため、カスタムインストールでJMSサービスを有効にしてインストールします。
MQのインストールフォルダー(以降、[MQ_Install]と表記します)のjava/libフォルダーにある、以下のJavaライブラリをフローサービスのフォルダーにコピーします。コピー先のフローサービスのフォルダーは
[DATA_DIR]/system/lib/extとなります。コピー先に同じファイルがある場合は上書きしてください。OpenJMS用のライブラリは削除しておくことを推奨します。
Windows − C:\Program Files\IBM\MQ Linux − /opt/mqm
フローサービスを実行するアカウントからMQにアクセスできるよう、適宜アカウントの設定を変更します。Linuxの場合はフローサービスの実行アカウントがmqmグループに所属するようにします。Windowsでフローサービスの実行アカウントがドメインユーザーである場合は、domain mqmドメイングループに所属するようにします。詳しくはMQのマニュアルを参照してください。
コピーされたライブラリがフローサービスで有効になります。
[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]のように設定します。
管理コンソールにログインし、[設定]-[コネクション]-[その他]のメニューからJNDIコネクションを作成します。「Provider URL」「Initial Factory」項目にMQ上のJMS30Admin.configファイルに指定した値を設定します。
以下の作業がMQでキューを作成するたびに毎回必要になります。
各手順の詳細を以下に説明します。
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にクライアントモードで接続する場合
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におけるキューマネージャ、キューの作成方法、クライアント接続のための設定方法、JMS30Adminの使い方などの詳細はMQのマニュアルを参照してください。
管理コンソールにログインし、[設定]-[コネクション]-[その他]のメニューからQueueコネクションを作成します。「JNDI接続名」項目にあらかじめ指定しておいたJNDIコネクションの値設定します。「Queue Connection Factory」項目にJMS30Adminで定義した値を設定します。
以上で本コンポーネントからJMS30Adminで定義したキューにアクセスできるようになります。