2015-04-19 4 views
2

Я определил адаптер ftp для подключения к ftp-серверу, но я вижу журнал ftp-сервера и не вижу запроса, отправленного на ftp-сервер. мой адаптер код:Как получить список каталогов или файлов с ftp-сервера с помощью int-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 

при изменении usename и пароль для тестирования (фальшивый пропуск и usename) ничего не меняет и выбросить исключение,

ответ

1

Ваш конфиг выглядит хорошо, но вы немного пропустили подход. <int-ftp:outbound-gateway> - это компонент запроса/ответа, управляемый событиями, и он не может ничего делать с FTP до тех пор, пока в inbound1 не будет message. Даже если это <queue>, <poller> начинает свою работу только в том случае, если нет Received no Message during the poll.

Поскольку вы используете expression="payload", ваш requestMessage должен содержать payload с remote dir из пользовательского FTP дома.

Итак, просто отправьте такое сообщение inbound1 и сообщите нам, как это!

UPDATE

Чтобы выполнить команду LS на <int-ftp:outbound-gateway> периодически с тем же dir как payload вы должны настроить что-то вроде этого:

<inbound-channel-adapter channel="inbound1" expresssion="'/'"> 
    <poller fixed-delay="10000"/> 
</inbound-channel-adapter> 

Having, что (и ваш <gateway>) случай нет необходимости иметь этот канал inbound1 в качестве <queue>

+0

спасибо за хорошее объяснение Artem –

+0

как отправить сообщение на входящий канал? не работал :( –

+0

это сработало @Artem спасибо за ответ –

Смежные вопросы