Этот вопрос очень тесно связан с this и это. С помощью коннектора SFTP потоковая передача включена по умолчанию и не может быть отключена (версия 3.5.2). Если у меня есть поток, подобный приведенному ниже
1) Входящий SFTP-коннектор с большой частотой опроса (например, в часах)
2) Исходящий файл для сохранения потока в файл в локальном хранилище
Здесь я ожидаю, что входящий SFTP удалит исходный файл после завершения передачи. (Но этого не происходит)
Читая документацию, я нахожу следующее
Автоудаление (применимо только к конечной точке входящего SFTP). Щелкните это поле, чтобы удалить файл после его прочтения. Примечание. Если при записи Mule в исходящую конечную точку возникает ошибка, файл не удаляется. Автоудаление работает только в том случае, если и входящие, и исходящие конечные точки используют транспорт SFTP.
Есть ли обходной путь для этого? В основном, как я могу удалить исходный файл после того, как я загрузил его с сервера SFTP?
Вышеупомянутое в основном связано с документацией, автоматическое удаление SFTP работает, даже если исходящий трафик не является соединителем SFTP. Я зарегистрировал JIRA об этом здесь
Обновление:
Я определил основную причину проблемы: выходные данные коннектора SFTP при развертывании в облачном хабе возвращают экземпляр класса java.io.ByteArrayInputStream
, однако, когда приложение развертывается через Anypoint studio, выходными данными является экземпляр класса org.mule.transport.sftp.SftpInputStream
.
Для воспроизведения убедитесь, что размер файла меньше 2 МБ.
Это приводит к тому, что файл не удаляется при развертывании в Cloudhub.
Журналы из CloudHub
Журналы локального развертывания
2015-04-28 15:37:50 DEBUG SftpConnectionFactory:118 - Successfully connected to: sftp://decision_1:####@XXXXXXX:22/To_DI_Local
2015-04-28 15:37:50 DEBUG SftpClient:121 - Attempting to cwd to: /To_DI_Local
2015-04-28 15:37:50 DEBUG SftpConnector:121 - Successfully changed working directory to: /To_DI_Local
2015-04-28 15:37:50 DEBUG SftpMessageReceiver:121 - Routing file: ZCCR_EXTRACT_FINAL.CSV
**2015-04-28 15:37:50 INFO LoggerMessageProcessor:193 - InputSFTPEndpoint org.mule.transport.sftp.SftpInputStream**
2015-04-28 15:37:50 DEBUG SftpMessageReceiver:121 - Routed file: ZCCR_EXTRACT_FINAL.CSV
2015-04-28 15:37:50 DEBUG SftpMessageReceiver:121 - Polling. Routed all 1 files found at sftp://decision_1:####@XXXXXX:22/To_DI_Local
2015-04-28 15:37:50 INFO LoggerMessageProcessor: 193 - InputSFTPEndpoint org.mule.transport.sftp.SftpInputStream
Мой поток выглядит так, как показано ниже
Обновление 2:
Однако, если файл большой, я думаю, что что-то около 10 МБ, тогда тип возврата - com.google.common.io.MultiInputStream
, и файл удаляется.
Есть идеи, почему Cloudhub так себя ведет?
and
исходящие конечные точки используют SFTP. - person vikingsteve   schedule 22.04.2015