FileInput ノードをメッセージ・フローに追加する場合は、ファイルから読み取られるメッセージを処理するようにそのノードを構成します。
FileInput ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。
メッセージ・フロー・ノードの構成を参照してください。
ノードのプロパティーが、「プロパティー」ビューに表示されます。
値を入力する必要のある (デフォルト値が定義されていないプロパティー) すべての必須プロパティーには、アスタリスクが表示されます。
- オプション: 「説明」タブで、簡略説明、詳細説明、あるいはその両方を入力します。 このタブで、ノードを名前変更することもできます。
- 「基本」タブで、FileInputノードにより処理されるディレクトリーとファイルを、重複ファイルが検出された場合の処理も含めて入力します。
- 「入力ディレクトリー」では、FileInput ノードがファイルを取得する先のディレクトリーを指定します。
絶対または相対のどちらかのディレクトリー・パスとして、ディレクトリーを指定します。 ディレクトリー・パスを相対パスにすると、それは、環境変数 MQSI_FILENODES_ROOT_DIRECTORY に指定されているディレクトリーをベースとします。
Windows システムでの例は C:¥fileinput です。 UNIX システムでの例は /var/fileinput です。
Windows では、ローカル・コンピューターにマップされる共有ディレクトリーを指定する場合、ドライブを表す文字ではなく、共有名 (¥¥myshare¥mydirectory など) を指定します。
FileInput ノードは、入力ファイルの処理中、それらを保持しロックするために、指定の入力ディレクトリーに mqsitransitin サブディレクトリーを作成します。 この入力ディレクトリー内でファイルを処理する実行グループが除去された場合、
mqsitransitin サブディレクトリーを調べて、
一部だけ処理されたファイルや未処理のファイルがないかを確認してください。 そのようなファイルがあれば、それを入力ディレクトリーに戻し入れることにより (そして実行グループ UUID 接頭部をファイル名から除去することにより)、異なる実行グループによる処理を可能にします。 mqsitransitin サブディレクトリーの詳細については、複数のファイル・ノードが同じディレクトリー内のファイルへのアクセスを共有する方法を参照してください。
- 入力ディレクトリーの下のディレクトリー構造内にあるファイルを処理する場合は、「ローカル・サブディレクトリーを含める」を選択します。
ブローカーは、指定される最上位ディレクトリーへのアクセス権限がなければなりません。ブローカーに、特定のサブディレクトリーへのアクセス権限がないと、そのサブディレクトリーは検索されず、ユーザー・トレースにメッセージが書き込まれます。
ファイルはその存続期間に応じて処理されます。すなわち、最も古いファイルが、ディレクトリー構造内のどこにあるかに関わらず、最初に処理されます。 ファイルを処理するか無視するかは第 1 にファイル名またはパターンにより決定され、第 2 にファイル除外パターンにより決定されます。
「ローカル・サブディレクトリーを含める」プロパティーと「リモート転送」プロパティーの両方を選択すると、ローカル・システムのサブディレクトリーのみで、処理するファイルが検索されます。
それに対して、リモート・システム上では、指定された最上位ディレクトリーのみで、処理するファイルが検索されます。
- 「ファイル名またはパターン」では、ファイル名のパターンを指定します。 それは、ファイル名であるか、またはファイル名に一致する文字シーケンス (パターン) です。 パターンとは、以下のワイルドカード文字のうちの少なくとも 1 つを使用しているシーケンスのことです。
ワイルドカード文字 |
説明 |
例 |
* |
ゼロ個以上の文字の任意のシーケンス |
*.xml は拡張子が xml のすべてのファイル名に一致します。 |
? |
任意の 1 文字 |
f??????.csv は、文字 f および後続の 6 文字、さらにその後のシーケンス .csv からなるすべてのファイル名に一致します。 |
- 「ファイル除外パターン」には、処理から除外するファイル名のパターンを指定します。
ファイル名、またはファイル名に一致する文字シーケンス (パターン) を指定します。 パターンとは、『ワイルドカード文字』で説明しているワイルドカード文字のうちの少なくとも 1 つを含むシーケンスのことです。 あるファイルを処理から除外するには、そのファイルの名前がパターンと一致する必要があります。
- 「正常処理時のアクション」を選択し、ファイルが正常に処理された後に FileInput ノードで行うアクションを指定します。 アクションとしては、ソース・ファイルをアーカイブ・サブディレクトリーに移動したり、ファイル名にタイム・スタンプを追加してアーカイブ・サブディレクトリーにファイルを移動したり、あるいはファイルを削除したりすることができます。
- 「アーカイブ・サブディレクトリーに移動」を選択すると、ソース・ファイルは入力ディレクトリーのアーカイブ・サブディレクトリーに移動されます。 サブディレクトリーの名前は mqsiarchive になります。
例えば、入力ディレクトリーが /var/fileinput であれば、アーカイブ・サブディレクトリーの絶対パスは /var/fileinput/mqsiarchive になります。
このディレクトリーが存在しない場合は、ブローカーは、そこへのファイルの移動を最初に試みたときに、ディレクトリーを作成します。
- 「タイム・スタンプを追加し、アーカイブ・サブディレクトリーに移動」を選択すると、現在の日時がファイル名に追加されてから、ファイルは mqsiarchive に移動されます。
- 「削除」を選択すると、ファイルは、処理の正常完了後に削除されます。
- ユーザー・トレースが稼働中の場合、FileInput ノードは、ファイルの処理ごとにメッセージをユーザー・トレースに書き込みます。
- アーカイブ・サブディレクトリー内のファイルを、処理が正常に完了した同名のファイルに置き換えるには、「重複するアーカイブ・ファイルを置き換える」を選択します。
このオプションを設定しなかった場合に、アーカイブ・サブディレクトリー内に同名のファイルが存在すると、ノードは、処理が正常に完了したファイルの移動を試みたときに、例外をスローします。
- 「入力メッセージの構文解析」タブで、ノードが着信メッセージの構文解析方法を決定するときに使用するプロパティーの値を設定します。
- 「メッセージ・ドメイン」では、提供されたリストから、使用するパーサーの名前を選択します。
デフォルトは BLOB です。 以下のオプションの中から選択することができます。
- DFDL
- XMLNSC
- DataObject
- JSON
- BLOB
- MIME
- MRM
- JMSMap
- JMSStream
- XMLNS
状況により、ユーザー定義のパーサーを指定することもできます。
- 検証モードで DFDL パーサー、MRM パーサー、または XMLNSC パーサーを使用している場合、リストから関連した「メッセージ・モデル」を選択します。 メッセージ・ドメインとして MRM または XMLNSC を選択すると、使用可能なメッセージ・セットがこのリストに取り込まれます。
メッセージ・ドメインとして DFDL を選択すると、使用可能な DFDL スキーマ・ファイルが取り込まれます。
- DFDL パーサーまたは MRM パーサーを使用する場合は、「メッセージ」のリストから、適切なメッセージ・タイプを選択します。 このリストには、選択したメッセージ・モデルで定義されたメッセージが取り込まれます。
- MRM パーサーを使用する場合は、「物理形式」のリストから、メッセージの形式を選択します。 このリストには、このメッセージ・モデル用に定義されたすべての物理形式が掲載されます。
- 「メッセージ・コード化文字セット ID」で、メッセージ・コード化文字セット ID を指定します。
- メッセージ・エンコードを「メッセージ・エンコード」のリストから選択するか、または数値のエンコード値を指定します。 エンコードの詳細については、データ変換を参照してください。
- 「パーサー・オプション」サブタブで、以下のプロパティーを設定します。
- 「解析のタイミング」は、デフォルトによって、「要求時」に設定されます。これにより、メッセージの構文解析が遅延されます。 メッセージ全体の構文をすぐに解析する場合は、このプロパティーを「即時」または「完全」に設定します。 詳細については、要求時の構文解析を参照してください。
- XMLNSC パーサーを使用する場合、XMLNSC パーサーの稼働方法を指定するプロパティーの値を設定します。
詳しくは、XMLNSC ドメインでのメッセージの操作を参照してください。
- 「ポーリング」タブで、「ポーリング間隔」の値を入力します。 このプロパティーは、処理するファイルを見つけるために FileInput ノードがファイル・システムにアクセスする頻度を制御します。
フローの開始時点のディレクトリーの最初のスキャンの後、FileInput ノードは、入力パターンに一致するファイルがディレクトリーに入っていないことが検出されるたびに、このプロパティーで定義されている期間待機します。 その結果、FileInput ノードが継続的にファイル・システムにアクセスしてシステム・リソースを大量に消費する必要はなくなります。
このプロパティーに設定する値が小さければ小さいほど、FileInput ノードは、入力ディレクトリー中にあるファイルをより速やかに発見することができます。 ただし、値が小さければ、システム・リソースの消費は多くなります。 値を大きくすれば、システム・リソースの使用量は軽減されますが、処理するファイルを FileInput ノードが発見するのが遅れるという犠牲を払います。
作業の統制をとる手段として、あるいは処理のスケジュールを立てる手段として、このプロパティーを使用しないでください。 FileInput ノードで、選択した期間中だけ入力ディレクトリーをモニターするには、それに適した時点でメッセージ・フローを開始および停止してください。
「リモート転送」プロパティーを選択し、「FTP」タブで「スキャン遅延」プロパティーを設定すると、「スキャン遅延」に設定した値によって、「ポーリング間隔」に設定されている値が指定変更されます。
- 「再試行」タブを使用して、メッセージ・フローが失敗したときに再試行処理がどのように実行されるかを定義します。
- 「再試行メカニズム」は、フローに障害が起きた場合にとるべきアクションを決定します。
- ノードが再試行を行わないで障害を報告するようにするには、Failure を選択します。
- 状況が続く場合に、ノードで再試行してから障害を報告するには、「短い再試行」を選択します。 再試行する回数は、「再試行しきい値」に指定します。
- ノードがまず、再試行を行う回数として「再試行しきい値」の値を使用して再試行するようにするには、「短い再試行と長い再試行」を選択します。 「再試行しきい値」の値に達した後も状況が持続する場合、ノードは次に「長い再試行間隔」の値を間隔として使用して試行を繰り返します。
- 「再試行しきい値」プロパティーの値を指定します。 「再試行メカニズム」プロパティーを「短い再試行」または「短い再試行と長い再試行」のいずれかに設定した場合に、ノードがフロー・トランザクションを再試行する回数です。
- 「短い再試行間隔」プロパティーの値を指定します。 短い再試行から次の短い再試行まで待機する秒単位の時間です。
- 「長い再試行間隔」プロパティーの値を指定します。 これは、メッセージの正常完了、メッセージ・フローの停止、またはメッセージ・フローの再デプロイまでの、長い再試行から次の長い再試行まで待機する時間です。 ブローカー・プロパティー MinLongRetryInterval は、「長い再試行間隔」に指定できる最小値を定義します。 値が最小値よりも小さい場合は、ブローカーの値が使用されます。
- 「障害を起こしたファイルに対する処置」プロパティーの値を指定して、ノードが入力ファイルの内容を処理しようとしたときに、その試行がすべて失敗した後に入力ファイルをどうするのかを指定します。
- バックアウト・サブディレクトリーに移動する。
そのファイルを入力ディレクトリーのバックアウト・サブディレクトリーに移動します。
このサブディレクトリーの名前は mqsibackout です。
入力ディレクトリーが /var/fileinput である場合、バックアウト・サブディレクトリーの絶対パスは /var/fileinput/mqsibackout です。
このサブディレクトリーが存在しない場合は、ブローカーは、そこへのファイルの移動を最初に試みたときに、このサブディレクトリーを作成します。 このサブディレクトリーへのファイルの移動が失敗した場合、その原因はおそらく、同一名のファイルがそこに存在していたからです。ノードは、現在の日時をそのファイル名に追加して、そのファイルの移動をもう一度試みます。 この 2 回目の試行も失敗すると、ノードは処理を停止します。 メッセージ BIP3331 および BIP3325 が発行されます。 メッセージ・フローの再始動を試みる前に、サブディレクトリーまたはファイルの問題を解決してください。
- 削除。 ファイルは、処理の失敗後に削除されます。
- タイム・スタンプを追加し、バックアウト・サブディレクトリーに移動する。 現在の日時がファイル名に追加されてから、ファイルはバックアウト・サブディレクトリーに移動されます。
- 「レコードとエレメント」タブを使用して、各ファイルをレコードとして解釈する方法を指定します。
- 「レコード検出」プロパティーを使用して、それぞれがメッセージを 1 つずつ生成する複数のレコードにファイルを分割する方法を指定します。 以下のオプションの中から選択します。
- 「ファイル全体」は、ファイル全体を 1 つのレコードにすることを指定します。ファイルのサイズは 100 MB に制限されます。
- 「固定長」は、各レコードは固定バイト数の長さであることを指定します。 ファイル内のおそらくは短い最後のレコードを除き、各レコードには、「長さ」プロパティーに指定されているバイト数が入っています。「長さ」に指定された値は、1 バイトから 100 MB までの範囲内である必要があります。デフォルトは 80 バイトです。
- 処理しているレコードが、DOS または UNIX の行終了によって、または一連のユーザー定義区切りバイトによって分離または終了されている場合は、「区切り」を選択します。 区切り文字および区切り文字タイプを「区切り文字」および「区切り文字タイプ」プロパティーに指定します。 レコードの長さは 100 MB に制限されます。
- メッセージ・ドメインで指定されたパーサーによって逐次認識された 1 つ以上のレコードのシーケンスがファイルに存在する場合は、「構文解析されたレコード・シーケンス」を選択します。 ノードは、認識された各レコードを別々のメッセージとして伝搬します。 「レコード検出」オプションを選択する場合、「メッセージ・ドメイン」で指定するパーサーは DFDL、XMLNSC、または MRM でなければなりません。
- 「レコード検出」に「解析済みレコード・シーケンス」を指定すると、FileInput ノードは、レコード長を判別も制限もしません。 メッセージ・フロー中の下流のノードは、レコード長の判別や、長いレコードの処理を試みることがあります。 このようなやり方で大きなレコードを処理するつもりの場合、ブローカーに十分なメモリーがあることを確認しておいてください。 使用可能メモリーを最大限に活用するために、Large Messaging サンプルで説明されているフロー技法を使用しなければならない場合もあります。
- 「レコード検出」に「区切り」を指定した場合、「区切り文字」を使用して、使用する区切り文字を指定します。 以下の値の中から選択します。
- DOS または UNIX の行終了。これは、UNIX システムでは改行文字 (<LF>、X'0A') を指定し、Windows システムでは復帰文字とその後に続く改行文字 (<CR><LF>, X'0D0A') を指定します。 ブローカーが稼働しているシステムが何であっても、ノードは、これらのストリングを両方とも区切り文字として扱います。 両者が同じファイル中にある場合、ノードは両者とも区切り文字と認識します。 ノードは、z/OS® システム上では「改行」バイトである X'15' を認識しません。したがって、z/OS システムの EBCDIC ファイルのような、EBCDIC 改行を使ってコーディングされた入力ファイルの場合は、このプロパティーにはカスタム区切り文字の値を指定し、「カスタム区切り文字」プロパティーには 15 の値を指定します。
- カスタム区切り文字。これは、「カスタム区切り文字」での一連のバイトの指定を可能にします。
- 「カスタム区切り文字」では、「区切り文字」プロパティーに「カスタム区切り文字」が設定されている場合に使用する 1 つ以上の区切り文字バイトを指定します。 16 進数字の偶数ストリングでこの値を指定します。 デフォルトは X'0A' であり、ストリングの最大長は 16 バイトです (32 桁の 16 進数字で表されます)。
- 「レコード検出」に「区切り」を指定した場合、「区切り文字タイプ」を使用して、区切り文字タイプを指定します。 使用できる値は以下のとおりです。
- 中置。 この値を選択すると、各区切り文字によって 2 つのレコードが区切られます。 ファイルが区切り文字で終了する場合、最後の区切り文字の後に続く長さゼロのファイル内容は、データが入っていなくても、やはりメッセージとして伝搬されます。
- 後置。 この値を指定すると、各区切り文字によってレコードが終了します。 ファイルが区切り文字で終了する場合、区切り文字より後の空のレコードは伝搬されません。 ファイルが区切り文字で終了しない場合、そのファイルの最終バイトの後に区切り文字が続いているものとしてファイルは処理されます。 「後置」がデフォルト値です。
- FileInput ノードでは、入力ファイルで区切り文字が出現するたびに、それによって各レコードが分離 (中置) または終了 (後置) されるとみなされます。 ファイルが区切り文字で開始する場合は、ノードはその区切り文字の前の (ゼロの長さの) ファイル内容をレコードとして扱い、空のレコードをフローに伝搬します。 区切り文字が伝搬されるメッセージに含まれることはありません。
- 「妥当性検査」タブを使用して、事前定義メッセージ用のメッセージ・セットに基づいた妥当性検査を提供します。 妥当性検査の詳細については、メッセージの妥当性検査を参照してください。
このタブを完成させる方法の詳細は、「妥当性検査」タブのプロパティーを参照してください。
- ノードで以下のプロパティーを使用して FTP サーバーまたは SFTP サーバーからファイルを読み取るには、「FTP」タブの「リモート転送」プロパティーを選択します。
- 「転送プロトコル」で、リモート・ファイル転送に使用するプロトコルを指定します。
指定できる値は FTP および SFTP です。
- 「リモート・サーバーおよびポート」で、使用する FTP または SFTP サーバーの IP アドレスとポート番号を入力します。 以下のいずれかの構文を使用します。
- IP_address_or_URL
- IP_address_or_URL:port_number
IPv6 フォーマットの IP アドレスを指定する場合、以下の例のとおり、必ず大括弧で囲んでください。 - [12a::13bd:24cd]
- [12a::13bd:24cd]:123。ただし 123 は、ポート番号です。
FTP を使用する場合にポート番号を指定しなければ、21 が使用されます。 SFTP を使用中にポート番号を指定しない場合、ポート番号 22 が想定されます。 ただし FtpServer 構成可能サービスが定義されている場合、その構成可能サービスの名前をこのフィールドに入力することができます。 FtpServer 構成可能サービス定義と、このタブ上のプロパティーがどのように対話するかの詳細は、FtpServer 構成可能サービスを参照してください。
- 「セキュリティー ID」で、mqsisetdbparms コマンドを使って定義されたセキュリティー ID の名前を指定します。
FTP または SFTP サーバーへのログオンに使用するユーザー ID およびパスワードは、この定義から取得します。
この定義の名前には、接頭部 ftp:: が付いている必要があります。 このプロパティーの値は、FtpServer 構成可能サービスの securityIdentity プロパティーの値 (設定されている場合) によって指定変更されます。
- 「サーバー・ディレクトリー」では、ファイルの転送元の FTP または SFTP サーバー内のディレクトリーを指定します。 デフォルトは、ピリオド (.)です。
これは、ログオン後のデフォルト・ディレクトリーを意味します。 相対パスを指定すると、FTP または SFTP のログオン後のデフォルト・ディレクトリーに基づくディレクトリーになります。 パスの構文が、FTP または SFTP サーバー内のファイル・システム標準に準拠するよう気を付けてください。 このプロパティーの値は、FtpServer 構成可能サービスの remoteDirectory プロパティーの値 (設定されている場合) によって指定変更されます。
「リモート転送」プロパティーと「ローカル・サブディレクトリーを含める」プロパティーの両方を選択すると、ローカル・システムのサブディレクトリーのみで、処理するファイルが検索されます。 それに対して、リモート・システム上では、指定された最上位ディレクトリーのみで、処理するファイルが検索されます。
- 「転送モード」では、ファイルの転送方法を指定します。
ファイル内容を変換しない場合は、「バイナリー」を選択します。 ファイルを ASCII として伝送する場合は、「ASCII」を選択します。
このプロパティーの値は、FtpServer 構成可能サービスの transferMode プロパティーの値 (設定されている場合) によって指定変更されます。
このプロパティーは、リモート転送用のプロトコルとして FTP が選択されている場合にのみ有効です。プロトコルに SFTP を指定すると、「転送モード」プロパティーは無視され、バイナリー・エンコードが使用されます。
- 「スキャン遅延」では、ディレクトリー・スキャン間の遅延を秒数で指定します。
デフォルトは 60 秒です。このプロパティーに設定した値は、「リモート転送」プロパティーが選択されている場合、「ポーリング」タブのポーリング間隔に設定した値を指定変更します。 このプロパティーの値は、FtpServer 構成可能サービスの scanDelay プロパティーの値 (設定されている場合) によって指定変更されます。
- 「トランザクション」タブで、トランザクション・モードを設定します。
ファイル操作はすべて非トランザクションですが、この入力ノード上のトランザクション・モードによって、フロー内の残りのノードを同期点の下で実行するかどうかが決まります。 フロー更新がトランザクションとして扱われるようにする (可能な場合) には、「はい」を選択し、トランザクションとして扱われないようにするには「いいえ」を選択します。 このプロパティーのデフォルトは「いいえ」です。
- オプション: 「インスタンス」 タブで、ノードで使用できるその他のインスタンス (スレッド) を制御するプロパティーの値を設定します。 詳細については、構成可能な「メッセージ・フロー」プロパティーを参照してください。