如何使用 int-ftp:outbound-gateway 从 ftp 服务器接收目录或文件列表?
How to receive list of directories or file from ftp server with int-ftp:outbound-gateway?
我定义了 ftp 适配器以连接到 ftp 服务器,但我看到 ftp 服务器日志,但没有看到发送到 ftp 服务器的请求。我的适配器代码是:
<bean id="ftpClientFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
<property name="host" value="127.0.0.1"/>
<property name="port" value="21"/>
<property name="username" value="banks_reader"/>
<property name="password" value="123456"/>
<property name="clientMode" value="2"/>
<property name="fileType" value="2"/>
</bean>
<int:channel id="inbound1">
<int:queue/>
</int:channel>
<int:channel id="outbound"/>
<int-ftp:outbound-gateway id="gateway1"
session-factory="ftpClientFactory"
request-channel="inbound1"
reply-channel="outbound"
reply-timeout="777"
auto-create-local-directory="false"
auto-startup="true"
filename-pattern="*"
remote-file-separator="/"
command="ls"
command-options="-1 -f"
expression="payload"
order="1"
mput-regex=".*">
<int:poller fixed-delay="1000"/>
</int-ftp:outbound-gateway>
显示:
DEBUG PollingConsumer:208 - Received no Message during the poll, returning 'false' in application log
当更改用户名和密码进行测试时(假密码和用户名)不更改任何内容并抛出异常
你的配置看起来不错,但你错过了一点方法。
<int-ftp:outbound-gateway>
是一个事件驱动的 request/reply 组件,在 inbound1
中没有 message
之前,它无法对 FTP 做任何事情。
即使是<queue>
,<poller>
只有在没有Received no Message during the poll
.
的情况下才会开始工作
由于您使用 expression="payload"
,因此您的 requestMessage
必须包含 payload
和来自 FTP 用户主页的 remote dir
。
所以,只需将这样的消息发送到 inbound1
,让我们知道情况如何!
更新
要使用与 payload
相同的 dir
定期对 <int-ftp:outbound-gateway>
执行 LS
命令,您必须这样配置:
<inbound-channel-adapter channel="inbound1" expresssion="'/'">
<poller fixed-delay="10000"/>
</inbound-channel-adapter>
有了那个(和你的 <gateway>
)案例,就没有必要将那个 inbound1
频道作为 <queue>
我定义了 ftp 适配器以连接到 ftp 服务器,但我看到 ftp 服务器日志,但没有看到发送到 ftp 服务器的请求。我的适配器代码是:
<bean id="ftpClientFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
<property name="host" value="127.0.0.1"/>
<property name="port" value="21"/>
<property name="username" value="banks_reader"/>
<property name="password" value="123456"/>
<property name="clientMode" value="2"/>
<property name="fileType" value="2"/>
</bean>
<int:channel id="inbound1">
<int:queue/>
</int:channel>
<int:channel id="outbound"/>
<int-ftp:outbound-gateway id="gateway1"
session-factory="ftpClientFactory"
request-channel="inbound1"
reply-channel="outbound"
reply-timeout="777"
auto-create-local-directory="false"
auto-startup="true"
filename-pattern="*"
remote-file-separator="/"
command="ls"
command-options="-1 -f"
expression="payload"
order="1"
mput-regex=".*">
<int:poller fixed-delay="1000"/>
</int-ftp:outbound-gateway>
显示:
DEBUG PollingConsumer:208 - Received no Message during the poll, returning 'false' in application log
当更改用户名和密码进行测试时(假密码和用户名)不更改任何内容并抛出异常
你的配置看起来不错,但你错过了一点方法。
<int-ftp:outbound-gateway>
是一个事件驱动的 request/reply 组件,在 inbound1
中没有 message
之前,它无法对 FTP 做任何事情。
即使是<queue>
,<poller>
只有在没有Received no Message during the poll
.
由于您使用 expression="payload"
,因此您的 requestMessage
必须包含 payload
和来自 FTP 用户主页的 remote dir
。
所以,只需将这样的消息发送到 inbound1
,让我们知道情况如何!
更新
要使用与 payload
相同的 dir
定期对 <int-ftp:outbound-gateway>
执行 LS
命令,您必须这样配置:
<inbound-channel-adapter channel="inbound1" expresssion="'/'">
<poller fixed-delay="10000"/>
</inbound-channel-adapter>
有了那个(和你的 <gateway>
)案例,就没有必要将那个 inbound1
频道作为 <queue>