Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第50章 flatpack
Flatpack コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Flatpack コンポーネントは、FlatPack ライブラリー を使用して固定幅と区切られたファイル解析をサポートします。注記: このコンポーネントは、flatpack ファイルからオブジェクトモデルへの消費のみをサポートします。オブジェクトモデルから flatpack 形式に書き込みを行うことは(yet)できません。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
flatpack:[delim|fixed]:flatPackConfig.pzmap.xml[?options]
flatpack:[delim|fixed]:flatPackConfig.pzmap.xml[?options]
または、設定ファイルのない区切りファイルハンドラーには、以下を使用します。
flatpack:someName[?options]
flatpack:someName[?options]
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
delimiter
|
,
|
区切りファイルのデフォルトの文字区切り文字。 |
textQualifier
|
"
|
区切りファイルのテキスト修飾子。 |
ignoreFirstRecord
|
true
|
最初の行が区切られたファイル(列ヘッダー用)で無視されるかどうか。 |
splitRows
|
true
|
Apache Camel 1.5 では、コンポーネントは各行を 1 つずつ、またはコンテンツ全体を一度に処理できます。 |
allowShortLines
|
false
|
*Camel 2.9.3:* 行を予想よりも短くし、追加の文字を無視します。 |
ignoreExtraColumns
|
false
|
*Camel 2.9.3:* 行を予想よりも長くし、追加文字を無視します。 |
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
flatpack:fixed:foo.pzmap.xml
は、foo.pzmap.xml
ファイル設定を使用して固定幅エンドポイントを作成します。flatpack:delim:bar.pzmap.xml
ファイル設定を使用して、bar.pzmap.xml
ファイル設定を使用して区切られたエンドポイントを作成します。flatpack:foo
は、ファイル設定なしでfoo
という区切りエンドポイントを作成します。
メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は以下のヘッダーを IN メッセージに保存します。
ヘッダー | 説明 |
---|---|
camelFlatpackCounter
|
現在の行インデックス。splitRows=false の場合、カウンターは行の合計数です。
|
メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、
java.util.Map
または java.util.List
のコンバーターを持つ org.apache.camel.component.flatpack.DataSetList
オブジェクトとして IN メッセージのデータを提供します。一度に 1 行を処理する場合は、通常 マップ
が必要です(splitRows=true
)。コンテンツ全体に List
を使用します(splitRows=false
)。リストの各要素は Map
です。各 Map
には、列名とそれに対応する値のキーが含まれます。
たとえば、以下の例から firstname を取得するには、次のコマンドを実行します。
Map row = exchange.getIn().getBody(Map.class); String firstName = row.get("FIRSTNAME");
Map row = exchange.getIn().getBody(Map.class);
String firstName = row.get("FIRSTNAME");
ただし、これを常に
List
として取得することもできます( splitRows=true
も同様です)。同じ例:
List data = exchange.getIn().getBody(List.class); Map row = (Map)data.get(0); String firstName = row.get("FIRSTNAME");
List data = exchange.getIn().getBody(List.class);
Map row = (Map)data.get(0);
String firstName = row.get("FIRSTNAME");
ヘッダーおよびトレイルレコード リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Flatpack のヘッダーおよびトレイル概念がサポートされます。ただし、固定されたレコード ID を使用する 必要があり ます。
ヘッダー
レコードのヘッダー(小文字でなければなりません)trailer
レコードのトレイル(小文字でなければなりません)
以下の例は、ヘッダーとトレイルがあるこのファクトを示しています。必要でない場合は、それらのいずれかまたは両方を省略することができます。
エンドポイントの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
一般的なユースケースでは、別のルートでさらなる処理のためにファイルをこのエンドポイントに送信します。以下に例を示します。
Bean 統合を容易にするために、作成された各メッセージのペイロードを
マップ
に変換することもできます。