Выражение локального каталога в адаптере входящего канала s3
Могу ли я иметь выражение локального каталога в s3 входящего адаптера. Мой путь к локальной директории является выражением. Как назначить переменную выражения в атрибуте local-directory?
Config details below
<int-aws:s3-inbound-channel-adapter id="s3FileInbound"
channel="s3FilesChannel"
session-factory="s3SessionFactory"
auto-create-local-directory="false"
delete-remote-files="false"
preserve-timestamp="true"
filter="acceptOnceFilter"
local-directory="local_directory"
auto-startup="false"
remote-directory="s3_bucket"/>
1 ответ
local-directory
не может быть решена из сообщения, потому что сообщение создается точно после копирования удаленного файла в него local-directory
,
Этот атрибут может быть использован для построения относительного локального пути:
<xsd:attribute name="local-filename-generator-expression">
<xsd:annotation>
<xsd:documentation>
Allows you to provide a SpEL expression to
generate the file name of
the local (transferred) file. The root
object of the SpEL
evaluation is the name of the original
file.
For example, a valid expression would be "#this.toUpperCase() +
'.a'" where #this represents the
original name of the remote
file.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
Таким образом, вы можете иметь local-directory
в качестве корневого пути на вашем жестком диске и создайте оттуда целевой каталог вместе с именем файла для локальной файловой системы.
Также см. https://jira.spring.io/browse/INT-4025 для получения дополнительной информации.
ОБНОВИТЬ
Я бы настроил это так:
<int-aws:s3-inbound-channel-adapter
local-directory="C:/"
local-filename-generator-expression="'my_local_directory/' + #this"/>