Flex Gateway新着情報
Governance新着情報
Monitoring API Managerファイル用 Anypoint Connector (File Connector) を使用すると、トランスポートは Mule 3 実装でのインバウンドエンドポイントポーリングの結果としてのみでなく、フローの任意の時点でファイルを読み取ることができます。
Read
操作で必須のパラメーターは、読み取られるファイルへのパスのみです。パスには、ファイルへのフルパスまたは相対パスを指定できます。パスは、config-ref
パラメーターによって参照される設定で定義された作業ディレクトリの値を使用します。Anypoint Studio では、[File path (ファイルパス)] 項目でパスを設定できます。XML では、<file:read
ステートメントで path 属性を使用してパスを指定します。
設定が参照されていない場合、作業ディレクトリはデフォルトで user.home
システムプロパティの値に設定されます。システムプロパティが設定されていない場合、コネクタは初期化に失敗します。
次の例は、ファイル設定と相対パスを使用してファイルを読み取ります。
<file:read config-ref="File_Config" path="relativePath"/>
xml
次の例は、フルパスを使用してファイルを読み取ります。
<file:read path="fullPath"/>
xml
Studio では、参照ボタン (…) をクリックして次のようなファイルを見つけます。
/Users/me/myfile
XML では、path 属性を使用して次のようなファイルへのパスを指定します。
<file:read path="/Users/me/myfile" />
Read
操作は、次の情報を含むメッセージを返します。
ペイロードとしてのファイルコンテンツ
メッセージ属性のファイルのメタデータ、メッセージ属性のメタデータ (名前、作成時間、サイズなど)。
ファイルが存在しない場合、Read
操作は FILE:ILLEGAL_PATH
エラーをスローします。この操作では、ディレクトリを読み取りません。
|
同じ Mule アプリケーションで多数の Read
操作 (またはその他のファイル操作) がパスの一部を共有している場合、ベースパスを「ファイル設定」に抽出して容易に再利用できます。
たとえば、フルパスが /Users/Documents/Examples/manual.txt
と /Users/Documents/Examples/readme.txt
の 2 つのファイルにアクセスするには、次のように設定でパスの同じ部分を定義します。
<file:config name="File_Config" >
<file:connection workingDir="/Users/Documents/Examples" />
</file:config>
xml
この設定を参照する Read
操作は次のようになります。
<flow>
<file:read config-ref="File_Config" path="manual.txt" />
<file:read config-ref="File_Config" path="readme.txt" />
</flow>
xml
各コネクタはファイルの MIME タイプをその拡張子から判別しようとします。MIME Type (MIME タイプ) (outputMimeType
) パラメーターを使用して強制的に MIME タイプを別の値に変更できます。
同じプロセスが文字コードでも機能します。デフォルトでは、コネクタは、Mule Runtime のデフォルトの文字コードがファイルの MIME タイプに一致するものとみなします。ただし、文字コードは Encoding (エンコード) (outputEncoding
) パラメーターで設定できます。
ペイロードと他の値を生成する操作内に DataWeave 式を埋め込むことができます。適切な MIME タイプを設定することで、DataWeave は型を自動で割り当てることができるほか、適切な出力を生成できます。また、DataSense の機能を最大限活用することで、ユーザーエクスペリエンスが向上します。
Mule アプリケーションの開発中、フォルダーとファイルを resources
フォルダーに保存できます。アプリケーションがデプロイされると、それらのフォルダーとファイルは ${app.home}
プロパティで定義されたディレクトリにコピーされます。
たとえば、resources
フォルダー内に MyFiles
という名前のフォルダーを定義し、MyFiles
フォルダー内に Example.txt
という名前のファイルを定義する場合、次のプロジェクト構造を使用します。
ランタイムでは、ファイルにアクセスするパスは ${app.home}/MyFiles/Example.txt
です。
ファイルを読み取るには、次の設定を定義します。
<file:config name="File_Config" >
<file:connection workingDir="${app.home}" />
</file:config>
xml
Read
操作を次のように設定します。
<file:read config-ref="File_Config" path="MyFiles/Example.txt" />
xml
前述のように、アプリケーションがデプロイされるたびに、src/main/resources フォルダーのコンテンツは ${app.home} ディレクトリにコピーされ、実行中にこれらのファイルに加えられた変更は、アプリケーションが停止または再デプロイされると失われます。そのため、アプリケーションの実行中に読み取る必要があるファイルのみを resource フォルダーに置くことをお勧めします。
|
lock
パラメーターを true
に設定することで、ファイルの読み取り中に他のプロセスがそのファイルにアクセスするのを防ぐことができます。ただし、これはホストのファイルシステムにより提供されるため、ロックの動作は、マウントされたドライブと、Mule が実行されているオペレーティングシステムに応じて変わる可能性があります。このロックに依存する前に以上の点を考慮してください。
ファイルが他のユーザーによりすでにロックされている場合、コネクタはファイルをロックできず、操作で FILE:FILE_LOCK
エラーがスローされます。
次のいずれかの状況が発生した場合、ロックは自動的にリリースされます。
ファイルをロックしていた Mule フローが終了した。
ファイルコンテンツが完全に読み取られた。
次に、ロックの例を示します。
<file:read config-ref="File_Config" path="relativePath" lock="true" />
xml
outputEncoding
および outputMimeType
パラメーターを使用して、Read
操作が出力する MIME タイプまたはエンコードを変更できます。これはファイルコンテンツは変換せず、MIME タイプまたはエンコード情報を上書きするだけです。次に例を示します。
<file:read config-ref="File_Config" path="relativePath"
outputEncoding="UTF-8"
outputMimeType="application/csv; headers=false" />
xml
Read
操作で返されるファイルコンテンツを読み取り、ファイルがまだ書き込み中であるか不明な場合は、TimeBetweenSizeChecks
パラメーターを使用できます。このパラメーターは、TimeBetweenSizeCheckUnit
パラメーターと連携します。この 2 つのパラメーターの組み合わせで、2 つのサイズ確認が実行されます。
1 つは、ストリームがコンシュームされるポイントにフローが到達したとき。Read
はファイルコンテンツを参照する遅延ストリームを返すため、Read
操作では時間の確認は行われません。そのため、ストリームがコンシュームされるときにのみサイズ確認を行うことが理にかなっています。
もう 1 つの確認は、TimeBetweenSizeChecks
および TimeBetweenSizeCheckUnit
パラメーターで設定された待機時間後に実行。
この両方のサイズ確認で同じファイルサイズが返された場合、ストリームは正常にコンシュームされています。2 つのサイズ確認で異なるファイルサイズが返された場合、ファイルはまだ書き込み中であるため、ストリームはコンシュームされず、操作はエラーで失敗します。
サイズ確認パラメーターを含む Read
操作を使用して、『Logger コンポーネント』で出力ストリームをコンシュームできます。
<file:read config-ref="File_Config"
path="filePath"
timeBetweenSizeCheck="15"
timeBetweenSizeCheckUnit="SECONDS">
<logger level="INFO" message="#[payload]"/>
</file:read>
xml
15 秒の確認は、Read
操作時ではなく logger
コンポーネントの実行時に行われます。
List 操作では、Mule 4 で導入された反復可能ストリーム機能が使用されます。この操作ではメッセージのリストが返されます。各メッセージはリスト内のファイルを表し、ファイルへのストリームを保持します。デフォルトでは、ストリームは反復可能です。
詳細は、「Mule 4 でのストリーミング」を参照してください。