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.第53章 FTP2
FTP/SFTP コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、FTP プロトコルおよび SFTP プロトコルを介してリモートファイルシステムへのアクセスを提供します。
リモート FTP サーバーからの消費
ファイルの使用に関する詳細については、以下の ファイルを使用する際の Default というセクションを必ずお読みください。
注記
絶対パスはサポートされていません。Camel 2.16 は、
directoryname
から先頭のスラッシュをすべてトリミングすることにより、絶対パスを相対に変換します。WARN メッセージがログに出力されます。
Camel on EAP デプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ftp://[username@]hostname[:port]/directoryname[?options] sftp://[username@]hostname[:port]/directoryname[?options] ftps://[username@]hostname[:port]/directoryname[?options]
ftp://[username@]hostname[:port]/directoryname[?options]
sftp://[username@]hostname[:port]/directoryname[?options]
ftps://[username@]hostname[:port]/directoryname[?options]
directoryname は基礎となるディレクトリーを表します。ネストされたフォルダーを含めることができます。ディレクトリー名は相対パスです。絶対パスはサポートされていません。相対パスには、ネストされたフォルダーを含めることができます(例:
/inbox/us
Camel 2.16 では、autoCreate
オプションがサポートされます。コンシューマーが起動すると(ポーリングがスケジュールされる前)、指定されたディレクトリーが自動的に作成されます。autoCreate
のデフォルト値は true
です。
ユーザー 名を指定しないと、パスワードなしで
匿名
ログインが試行されます。ポート 番号が指定されていない場合、Apache Camel はプロトコルに従ってデフォルト値を提供します(ftp = 21、sftp = 22、ftps = 21)。
このコンポーネントは、実際の FTP 作業に 2 つの異なるライブラリーを使用します。FTP および FTPS は Apache Commons Net を使用し、SFTP は JCraft JSCH を使用します。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションは FTP コンポーネント専用です。
名前 | デフォルト値 | 説明 |
---|---|---|
username
|
null
|
リモートファイル systen へのログインに使用するユーザー名を指定します。 |
password
|
null
|
リモートファイルシステムへのログインに使用するパスワードを指定します。 |
アカウント
|
null
|
Camel 2.15.2: リモート FTP サーバーへのログインに使用するアカウントを指定します(FTP および FTP Secure のみ)。 |
binary
|
false
|
ファイル転送モードを BINARY または ASCII で指定します。デフォルトは ASCII (false )です。
|
disconnect
|
false
|
Camel 2.2: 使用直後にリモート FTP サーバーから切断するかどうか。コンシューマーとプロデューサーの両方に使用できます。disconnect は、FTP サーバーへの現在の接続を切断するだけです。停止するコンシューマーがある場合は、代わりにコンシューマー/ルートを停止する必要があります。 |
localWorkDirectory
|
null
|
使用する場合、ローカルの作業ディレクトリーを使用して、リモートファイルのコンテンツをローカルファイルに直接保存し、コンテンツがメモリーに読み込まれないようにできます。これは、非常に大きなリモートファイルを使用している場合に、メモリーを節約するために役立ちます。詳細は、こちらを参照してください。 |
passiveMode
|
false
|
FTP のみ: パッシブモード接続を使用するかどうかを指定します。デフォルトはアクティブモード {false )です。
|
securityProtocol
|
TLS
|
FTPS のみ: 基礎となるセキュリティープロトコルを設定します。
TLS : Transport Layer Security SSL : Secure Sockets Layer の値を定義します。
|
disableSecureDataChannelDefaults
|
false
|
Camel 2.4: FTPS のみ: セキュアなデータ転送を使用する場合に execPbsz および execProt のデフォルト値の使用を無効にするかどうか。このオプションを true に設定するには、execPbsz オプションおよび execProt オプションを明示的に設定する必要があります。
|
ダウンロード
|
true
|
Camel 2.11: FTP コンシューマーがファイルをダウンロードするかどうか。このオプションを false に設定すると、メッセージボディーは null になりますが、コンシューマーはファイル名、ファイルサイズなどのファイルの詳細が含まれる Camel Exchange をトリガーします。ファイルがダウンロードされないだけです。
|
streamDownload | false | Camel 2.11: コンシューマーが前もってファイル全体をダウンロードするか、デフォルトの動作では、インメモリーアレイではなくリモートリソースから InputStream エドを amel Exchange の本文として渡す必要があるかどうかは無視されます。ダウンロードが false r が localWorkDirectory の場合は無視されます。このオプションは大きなリモートファイルで作業する場合に便利です。 |
execProt
|
null
|
Camel 2.4: FTPS のみ: セキュアなデータチャネルのデフォルトが無効でない場合は、デフォルトでオプション
P を使用します。以下の値が使用できます。
|
execPbsz
|
null
|
Camel 2.4: FTPS のみ: このオプションは、セキュアなデータチャネルのバッファーサイズを指定します。useSecureDataChannel オプションが有効で、このオプションが明示的に設定されていない場合、値 0 が使用されます。
|
isImplicit
|
false
|
FTPS のみ - セキュリティーモードを設定します (implicit/explicit)。デフォルトは明示的です(false )。
|
knownHostsFile
|
null
|
SFTP のみ: known_hosts ファイルを設定して、SFTP エンドポイントがホストキーの検証を実行できるようにします。
|
knownHostsUri
|
null
|
SFTP のみ:Camel 2.11.1: known_hosts ファイル(デフォルトではクラスパスからロード)を設定し、SFTP エンドポイントがホストキーの検証を実行できるようにします。
|
keyPair
|
null
|
SFTP のみ:Camel 2.12.0: SSH 公開鍵認証用の Java KeyPair を設定し、DSA キーまたは RSA 鍵をサポートします。 |
privateKeyFile
|
null
|
SFTP のみ: SFTP エンドポイントが秘密鍵を検証できるように秘密鍵ファイルを設定します。 |
privateKeyUri
|
null
|
SFTP のみ:Camel 2.11.1: 秘密鍵ファイル(デフォルトではクラスパスからロードされる)を SFTP エンドポイントが秘密鍵の検証を実行できるように設定します。 |
privateKey
|
null
|
SFTP のみ:Camel 2.11.1: SFTP エンドポイントが秘密鍵を検証することができるように、秘密鍵を byte[] に設定します。 |
privateKeyFilePassphrase
|
null
|
SFTP のみ: 秘密鍵ファイルのパスフレーズを SFTP エンドポイントが秘密鍵の検証を実行できるように設定します。 |
privateKeyPassphrase
|
null
|
SFTP のみ:Camel 2.11.1: SFTP エンドポイントが秘密鍵の検証を実行できるように、秘密鍵ファイルのパスフレーズを設定します。 |
preferredAuthentications
|
null
|
SFTP のみ:Camel 2.10.7、2.11.2、2.12.0: SFTP エンドポイントが使用される優先認証を設定します。たとえば、password,publickey などです。指定しない場合は、JSCH のデフォルトのリストが使用されます。 |
暗号化
|
null
|
Camel 2.8.2、2.9: SFTP は、優先順に使用される暗号のコンマ区切りリストのみ を設定します。可能な暗号名は、JCraft JSCH で定義されています。aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,aes256-cbc などがあります。指定しない場合は、JSCH のデフォルトのリストが使用されます。 |
fastExistsCheck
|
false
|
Camel 2.8.2、2.9: このオプションを true に設定すると、camel-ftp はリストファイルを直接使用してファイルが存在するかどうかを確認します。一部の FTP サーバーは直接ファイルの一覧表示をサポートしない可能性があるため、オプションが false の場合、camel-ftp は古い方法を使用してディレクトリーを一覧表示し、ファイルが存在するかどうかを確認します。Camel 2.10.1 以降では、このオプションが readLock=changed に影響し、ファイル情報の更新に高速チェックを実行するかどうかを制御します。FTP サーバーに多くのファイルがある場合に、これを使用してプロセスを迅速化できます。
|
strictHostKeyChecking
|
いいえ
|
SFTP のみ:Camel 2.2: 厳密なホストキーチェックを使用するかどうかを設定します。使用できる値は no 、yes 、および ask です。Camel は人間の介入を想定して質問に回答できないため、使用は理にかなっています。 注記: Camel 2.1 のデフォルトおよび以下では、が 求め られます。
|
maximumReconnectAttempts
|
3 | リモート FTP サーバーに接続しようとすると、Apache Camel の実行の最大再接続試行を指定します。この動作を無効にするには、0 を使用します。 |
reconnectDelay
|
1000 | Apache Camel が再接続を試みる前に待機する遅延(ミリ秒単位)。 |
connectTimeout
|
10000
|
Camel 2.4: 接続タイムアウト(ミリ秒単位)です。これは FTP/FTPS の ftpClient.connectTimeout の使用に対応します。SFTP では、接続の試行時にもこのオプションが使用されます。
|
soTimeout
|
30000
|
FTP および FTPS のみ:Camel 2.4: SocketOptions.SO_TIMEOUT の値はミリ秒単位です。
|
timeout
|
30000
|
FTP および FTPS のみ:Camel 2.4: データのタイムアウトはミリ秒単位です。これは FTP/FTPS の ftpClient.dataTimeout の使用に対応します。SFTP の場合、データタイムアウトはありません。
|
throwExceptionOnConnectFailed
|
false
|
Camel 2.5: 接続に成功し、ログインが確立できない場合に例外を出力するかどうか。これにより、カスタムの pollStrategy は例外に対応できます。たとえば、コンシューマーやのような機能を停止できます。
|
siteCommand
|
null
|
FTP および FTPS のみ:Camel 2.5: ログインに成功した後にサイトコマンドを実行する。複数のサイトコマンドは、改行文字(\n)を使用して区切ることができます。help site を使用して、FTP サーバーがサポートするサイトコマンドを確認します。
|
stepwise
|
true
|
ディレクトリーを使用する場合は、ディレクトリーツリーをトラバースするためにステップ単位のモードを使用するかどうかを指定します。Stepwise は、一度に 1 つのディレクトリーが CD になることを意味します。詳細は、「ディレクトリーのステップ的な変更」 を参照してください。 |
separator
|
UNIX
|
Camel 2.6: ファイルのアップロード時に使用するパスセパレーター char を変更します。auto は、変更せずに指定されたパスを使用することを意味します。UNIX は、UNIX スタイルのパス区切り文字を使用することを意味します。Windows は、Windows スタイルのパス区切り文字を使用することを意味します。
|
chmod
|
null
|
SFTP プロデューサーのみ: Camel 2.9: 保存したファイルに chmod を設定できます。たとえば、chmod=640 です。
|
圧縮
|
0
|
SFTP のみ: Camel 2.8.3/2.9: 圧縮を使用します。レベルを 1 から 10 に指定します。重要: 圧縮サポートのために必要な JSCH zlib JAR をクラスパスに手動で追加する必要があります。 |
receiveBufferSize
|
32768
|
FTP/FTPS のみ: Camel 2.15.1: ファイルのダウンロード用のバッファーサイズ。デフォルトのサイズは 32KB です。
|
ftpClient
|
null
|
FTP および FTPS のみ:Camel 2.1: カスタムの org.apache.commons.net.ftp.FTPClient インスタンスを使用できます。
|
ftpClientConfig
|
null
|
FTP および FTPS のみ:Camel 2.1: カスタムの org.apache.commons.net.ftp.FTPClientConfig インスタンスを使用できます。
|
serverAliveInterval
|
0
|
SFTP のみ:Camel 2.8 では、sftp セッションの serverAliveInterval を設定できます。 |
serverAliveCountMax
|
1
|
SFTP のみ:Camel 2.8 を使用すると、sftp セッションの serverAliveCountMax を設定できます。 |
ftpClient.trustStore.file
|
null
|
FTPS のみ: トラストストアファイルを設定し、FTPS クライアントが信頼された証明書を検索できるようにします。 |
ftpClient.trustStore.type
|
JKS
|
FTPS のみ:トラスト ストアのタイプを設定します。 |
ftpClient.trustStore.algorithm
|
SunX509
|
FTPS Only: トラストストアアルゴリズムを設定します。 |
ftpClient.trustStore.password
|
null
|
FTPS のみ:トラスト ストアのパスワードを設定します。 |
ftpClient.keyStore.file
|
null
|
FTPS のみ: FTPS クライアントがプライベート証明書を検索できるようにキーストアファイルを設定します。 |
ftpClient.keyStore.type
|
JKS
|
FTPS Only: キーストアタイプを設定します。 |
ftpClient.keyStore.algorithm
|
SunX509
|
FTPS Only: キーストアアルゴリズムを設定します。 |
ftpClient.keyStore.password
|
null
|
FTPS Only: キーストアのパスワードを設定します。 |
ftpClient.keyStore.keyPassword
|
null
|
FTPS Only: 秘密鍵のパスワードを設定します。 |
sslContextParameters
|
null
|
FTPS のみ:Camel 2.9: レジストリー の org.apache.camel.util.jsse.SSLContextParameters への 参照。 この参照は、ftpClient で設定された SSL 関連のオプションと、FtpsConfiguration に設定された securityProtocol (SSL、TLS など)を上書きします。 Security Guide および JSSE ユーティリティーの Configuring Transport Security for Camel Components を参照してください。
|
proxy
|
null
|
SFTP のみ:Camel 2.10.7、2.11.1: レジストリー で com.jcraft.jsch.Proxy への 参照。 このプロキシーは、ターゲット SFTP ホストからのメッセージの消費/送信に使用されます。
|
useList
|
true
|
FTP/FTPS のみ:Camel 2.12.1: コンシューマーが FTP LIST コマンドを使用してディレクトリーの一覧を取得し、どのファイルが存在するかを確認します。このオプションを false に設定すると、stepwise=false を設定し、fileName も固定名に設定する必要があります。そのため、コンシューマーは取得するファイルの名前を認識します。これを行うと、1 つのファイルのみを取得できます。詳細につていは以下をご覧ください
|
ignoreFileNotFoundOrPermissionError
|
false
|
Camel 2.12.1: ファイルの取得を試みたにも拘らず、存在せず(何らかの理由で)ファイルの取得を試みたときにコンシューマーが無視するかどうか、またはファイルパーミッションが不十分であるために失敗するかどうか。 |
sendNoop
|
true
|
Camel 2.16: プロデューサーのみ。FTP サーバーにファイルをアップロードする前に、noop コマンドを書き込み前チェックとして送信するかどうか。このオプションは、接続を検証し、サイレント再接続を有効にするためにデフォルトで有効になります。ただし、これで何らかの問題が発生した場合には、このオプションを無効にすることができます。 |
jschLoggingLevel
|
WARN
|
SFTP のみ:Camel 2.15.3/2.16: JSCH アクティビティーロギングに使用するログレベル。JSCH はデフォルトで詳細であるため(
INFO レベル)、しきい値はデフォルトで WARN に設定されます。
|
FTPS コンポーネントのデフォルトのトラストストア
FTPS コンポーネントで SSL に関連する
ftpClient.
プロパティーを使用する場合、トラストストアはすべての証明書を受け入れます。信頼の選択証明書のみが必要な場合は、ftpClient.trustStore.xxx
オプションを使用するか、カスタム ftpClient
を設定してトラストストアを設定する必要があります。
sslContextParameters
を使用する場合、トラストストアは提供される SSLContextParameters
インスタンスの設定によって管理されます。
その他のオプション
ftpClient
. または ftpClientConfig.
接頭辞を使用すると、URI から ftpClientConfig
および ftp
ClientConfig に直接追加オプションを設定できます。
たとえば、
FTPClient
の setDataTimeout
を 30 秒に設定するには、以下を実行できます。
from("ftp://foo@myserver?password=secret&ftpClient.dataTimeout=30000") .to("bean:foo");
from("ftp://foo@myserver?password=secret&ftpClient.dataTimeout=30000")
.to("bean:foo");
たとえば、日付形式やタイムゾーンを設定するために、組み合わせて一致させ、両方の接頭辞を使用できます。
from("ftp://foo@myserver?password=secret&ftpClient.dataTimeout=30000&ftpClientConfig.serverLanguageCode=fr") .to("bean:foo");
from("ftp://foo@myserver?password=secret&ftpClient.dataTimeout=30000&ftpClientConfig.serverLanguageCode=fr")
.to("bean:foo");
これらのオプションはいくつでも使用できます。
可能なオプションと詳細は、Apache Commons FTPClientConfig のドキュメントを参照してください。Apache Commons FTPClient でも同様です。
以下に例を示します。
<bean id="myConfig" class="org.apache.commons.net.ftp.FTPClientConfig"> <property name="lenientFutureDates" value="true"/> <property name="serverLanguageCode" value="fr"/> </bean>
<bean id="myConfig" class="org.apache.commons.net.ftp.FTPClientConfig">
<property name="lenientFutureDates" value="true"/>
<property name="serverLanguageCode" value="fr"/>
</bean>
URL で # 表記を使用すると、Camel がこの Bean をルックアップします。
from("ftp://foo@myserver?password=secret&ftpClientConfig=#myConfig").to("bean:foo");
from("ftp://foo@myserver?password=secret&ftpClientConfig=#myConfig").to("bean:foo");
その他の URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
重要
このコンポーネントにも適用されるすべてのオプションについては、File2 を参照してください。
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下は、FTP エンドポイント URI の例です。
ftp://someone@someftpserver.com/public/upload/images/holiday2008?password=secret&binary=true ftp://someoneelse@someotherftpserver.co.uk:12049/reports/2008/password=secret&binary=false ftp://publicftpserver.com/download
ftp://someone@someftpserver.com/public/upload/images/holiday2008?password=secret&binary=true
ftp://someoneelse@someotherftpserver.co.uk:12049/reports/2008/password=secret&binary=false
ftp://publicftpserver.com/download
FTP コンシューマーが同時実行をサポートしない
FTP コンシューマー(同じエンドポイント)は同時実行をサポートしません(バッキング FTP クライアントはスレッドセーフではありません)。複数の FTP コンシューマーを使用して、異なるエンドポイントからポーリングできます。これは、同時コンシューマーをサポートしない単一のエンドポイントのみです。
FTP プロデューサーにはこの問題が ない ため、同時実行をサポートします。
補足情報
ファイルの使用時のデフォルト リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
FTP コンシューマーは、デフォルトで、消費されたファイルがリモート FTP サーバー上で変更されないままにします。ファイルを削除したり、別の場所に移動したりする場合は、明示的に設定する必要があります。たとえば、
delete=true
を使用してファイルを削除するか、move=.done
を使用してファイルを非表示にしたサブディレクトリーに移動できます。
通常の File コンシューマーは、デフォルトでファイルを
.camel
サブディレクトリーに移動します。FTP コンシューマーに対して Camel はデフォルトでこれを行わないのは、ファイルを移動または削除するためにデフォルトでパーミッションがない可能性があるからです。
limitations リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
readLock オプションを使用すると、Apache Camel で現在書き込まれているファイルが消費され ない ようにすることができます。ただし、ユーザーに書き込みアクセスが必要であるため、このオプションはデフォルトでオフになっています。FTP 経由で現在書き込まれているファイルを使用しないようにするための他の解決策があります。たとえば、一時的な宛先に書き込みを行い、ファイルを書き込んだ後に移動することができます。
ftp プロデューサーは、既存のファイルへの追加をサポートし ません。リモートサーバー上の既存のファイルは、ファイルが書き込まれる前に削除されます。
メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のメッセージヘッダーを使用して、コンポーネントの動作に影響を与えることができます。
ヘッダー | 説明 |
---|---|
CamelFileName
|
エンドポイントに送信するときに出力メッセージに使用される出力ファイル名(エンドポイントディレクトリーに対する相対)を指定します。これがなく、式がない場合は、生成されたメッセージ ID がファイル名として使用されます。 |
CamelFileNameProduced
|
書き込まれた出力ファイルのパス名。このヘッダーは Apache Camel によって自動的に設定されます。 |
CamelFileBatchIndex
|
このバッチで使用されるファイルの合計数からの現在のインデックス。 |
CamelFileBatchSize
|
このバッチで消費されるファイルの合計数。 |
CamelFileHost
|
リモートホスト名。 |
CamelFileLocalWorkPath
|
ローカルの作業ディレクトリーが使用されている場合は、ローカルのワークファイルへのパス。 |
さらに、FTP/FTPS コンシューマーおよびプロデューサーは、以下のヘッダーで Camel
Message
を強化します。
ヘッダー | 説明 |
---|---|
CamelFtpReplyCode
|
Camel 2.11.1: FTP クライアントの応答コード(タイプは整数) |
CamelFtpReplyString
|
Camel 2.11.1: FTP クライアントの応答文字列 |
タイムアウトについて リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
2 つのライブラリーセット(上記を参照)には、タイムアウトを設定するために異なる API があります。両方の
connectTimeout
オプションを使用してタイムアウトをミリ秒単位で設定し、ネットワーク接続を確立できます。FTP/FTPS で個別の soTimeout
を設定することもできます。これは ftpClient.soTimeout
の使用に対応します。SFTP は connectTimeout
を soTimeout
として自動的に使用することに注意してください。timeout
オプションは、ftpClient.dataTimeout
値に対応するデータタイムアウトとして FTP/FTSP にのみ適用されます。すべてのタイムアウト値はミリ秒単位です。
ローカルワークディレクトリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は、リモートの FTP サーバーからの消費と、ローカルの作業ディレクトリーへのファイルのダウンロードをサポートします。これにより、
FileOutputStream
を使用してローカルファイルに直接ストリーミングされるため、リモートファイルの内容全体がメモリーに読み取られなくなります。
Apache Camel は、ファイルのダウンロード中に
.inprogress
を拡張子とし、リモートファイルと同じ名前のローカルファイルに保存します。その後、ファイルの名前が変更され、.inprogress
接尾辞が削除されます。最後に、エクスチェンジ が完了すると、ローカルファイルが削除されます。
そのため、リモートの FTP サーバーからファイルをダウンロードしてファイルとして保存する場合は、以下のようなファイルエンドポイントにルーティングする必要があります。
from("ftp://someone@someserver.com?password=secret&localWorkDirectory=/tmp").to("file://inbox");
from("ftp://someone@someserver.com?password=secret&localWorkDirectory=/tmp").to("file://inbox");
ワークファイルの名前変更による最適化
上記のルートは、ファイルの内容全体をメモリーに読み込まないようにするため、効率的です。リモートファイルをローカルファイルストリームに直接ダウンロードします。その後、
java.io.File
ハンドルが エクスチェンジ ボディーとして使用されます。ファイルプロデューサーはこのファクトを活用し、ワークファイル java.io.File
ハンドルで直接動作し、java.io.File.rename
をターゲットファイル名に対して実行できます。Apache Camel はローカルのワークファイルを認識しているため、作業ファイルはいつでも削除されることが意図されているため、ファイルコピーの代わりに名前変更を最適化および使用できます。
ディレクトリーのステップ的な変更 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel FTP は、ファイルの使用時(ダウンロードなど)やファイルの生成(アップロードなど)に関する 2 つのモードで動作できます。
- stepwise
- 非ステップ(stepwise)
状況やセキュリティーの問題に応じて、どちらかを選択できます。一部の Camel エンドユーザーは、ステップベースを使用している場合のみファイルをダウンロードできますが、ダウンロードできない場合に限りダウンロードが可能です。少なくとも、選択する選択肢があります。
ディレクトリーのステップ的な変更は、多くの場合、ユーザーがそのホームディレクトリーに制限され、ホームディレクトリーが
/
として報告される場合にのみ機能します。
これら 2 つの違いは、例で説明するのが最適です。リモート FTP サーバーで以下のディレクトリー構造がある場合は、ファイルをトラバースしてダウンロードする必要があります。
/ /one /one/two /one/two/sub-a /one/two/sub-b
/
/one
/one/two
/one/two/sub-a
/one/two/sub-b
また、
sub-a
(a.txt
)と sub-b
(b.txt
)の各フォルダーにファイルがあります。
stepwise=true (デフォルトモード)の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のログは、FTP エンドポイントが ステップ単位 のモードで動作している場合の FTP エンドポイントとリモート FTP サーバー間の対話を示しています。
ステップが有効にされると、CD xxx を使用してディレクトリー構造を通過します。
stepwise=false の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のログは、FTP エンドポイントが ステップ以外のモードで動作している場合の FTP エンドポイントとリモート FTP サーバー間の対話を示して います。
ステップ以外の場合に分かるように、CD 操作は呼び出されません。
サンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、Apache Camel を設定して、FTP サーバーからすべてのレポートを 1 時間(60 分)に BINARY コンテンツとしてダウンロードし、ローカルファイルシステムにファイルとして保存するように設定します。
Spring DSL を使用したルート:
<route> <from uri="ftp://scott@localhost/public/reports?password=tiger&inary=true&elay=60000"/> <to uri="file://target/test-reports"/> </route>
<route>
<from uri="ftp://scott@localhost/public/reports?password=tiger&inary=true&elay=60000"/>
<to uri="file://target/test-reports"/>
</route>
ルートによってトリガーされるリモート FTP サーバーの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
FTP コンシューマーは、from ルートで使用されるスケジュールされたコンシューマーとして構築されます。ただし、ルート内でトリガーされた FTP サーバーから消費を開始する場合は、以下のようなルートを使用します。
from("seda:start") // define the file name so that only a single file is polled and deleted once retrieved .pollEnrich("ftp://admin@localhost:21/getme?password=admin&binary=false&fileName=myFile.txt&delete=true") .to("mock:result");
from("seda:start")
// define the file name so that only a single file is polled and deleted once retrieved
.pollEnrich("ftp://admin@localhost:21/getme?password=admin&binary=false&fileName=myFile.txt&delete=true")
.to("mock:result");
リモート FTPS サーバー(暗黙的な SSL)およびクライアント認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
リモート FTPS サーバー(explicit TLS)およびカスタムトラストストア設定の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("ftps://admin@localhost:2222/public/camel?password=admin&ftpClient.trustStore.file=./src/test/resources/server.jks&ftpClient.trustStore.password=password") .to("bean:foo");
from("ftps://admin@localhost:2222/public/camel?password=admin&ftpClient.trustStore.file=./src/test/resources/server.jks&ftpClient.trustStore.password=password")
.to("bean:foo");
org.apache.camel.component.file.GenericFileFilter を使用するフィルター リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel はプラグ可能なフィルターリングストラテジーをサポートします。Java で
org.apache.camel.component.file.GenericFileFilter
インターフェイスを実装してフィルターストラテジーを定義します。次に、フィルターでエンドポイントを設定し、特定のファイルをスキップできます。
以下の例では、
report
で始まるファイル名のファイルのみを許可するフィルターを定義します。
次に、filter 属性を使用して、Spring XML ファイルで定義したフィルター(
#
表記を使用)を参照するルートを設定できます。
ANT パスマッチャーを使用したフィルターリング リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ANT パスマッチャーは、camel-spring jar で追加設定なしで同梱されるフィルターです。そのため、Maven を使用している場合は camel-spring に依存する必要があります。理由は、Spring の AntPathMatcher を使用して実際のマッチングを行うためです。
ファイルパスは、以下のルールと一致します。
?
1 文字に一致します。*
ゼロ以上の文字に一致します。**
パス内の 0 個以上のディレクトリーに一致します。
以下の例は、その使用方法を示しています。
SFTP でのプロキシーの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP プロキシーを使用してリモートホストに接続するには、以下のようにルートを設定できます。
必要に応じて、ユーザー名とパスワードをプロキシーに割り当てることもできます。すべてのオプションを検出するには、
com.jcraft.jsch.Proxy
のドキュメントを参照してください。
推奨される SFTP 認証方法の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
sftp
コンポーネントが使用する認証方法の一覧を明示的に指定する場合は、preferredAuthentications
オプションを使用します。たとえば、Camel が秘密鍵/パブリック SSH 鍵で認証を試み、公開鍵が利用できない場合にユーザー/パスワード認証にフォールバックします。以下のルート設定を使用します。
from("sftp://localhost:9999/root?username=admin&password=admin&preferredAuthentications=publickey,password") .to("bean:processFile");
from("sftp://localhost:9999/root?username=admin&password=admin&preferredAuthentications=publickey,password")
.to("bean:processFile");
固定名を使用した単一ファイルの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
1 つのファイルをダウンロードし、ファイル名を知っている場合は、
fileName=myFileName.txt
を使用して、ダウンロードするファイルの名前を Camel に指示できます。デフォルトでは、コンシューマーは FTP LIST コマンドを実行してディレクトリーの一覧を実行し、fileName
オプションに基づいてこれらのファイルをフィルターリングします。このユースケースでは、useList=false
を設定してディレクトリー一覧をオフにすることが推奨されます。たとえば、FTP サーバーへのログインに使用されるユーザーアカウントには、FTP LIST コマンドを実行する権限がない場合があります。そのため、useList=false
を使用してこれをオフにしてから、fileName=myFileName.txt
でダウンロードするファイルの固定名を指定します。その後、FTP コンシューマーはファイルをダウンロードできます。何らかの理由で ファイルが存在しない場合は、Camel はデフォルトで例外を出力し、ignoreFileNotFoundOrPermissionError=true
を設定してこれを無視します。
たとえば、単一ファイルを選択し、使用後に削除する Camel ルートを設定するには、次のようにします。
from("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true") .to("activemq:queue:report");
from("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true")
.to("activemq:queue:report");
上記で説明したすべてのオプションを使用していることに注意してください。
ConsumerTemplate
で使用することもできます。たとえば、単一のファイル(存在する場合)をダウンロードし、ファイルの内容を String タイプとして取得するには、以下を実行します。
String data = template.retrieveBodyNoWait("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true", String.class);
String data = template.retrieveBodyNoWait("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true", String.class);
デバッグロギング リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントにはログレベル TRACE があり、問題がある場合に役立ちます。