Выражение локального каталога в адаптере входящего канала s3 - PullRequest
0 голосов
/ 23 октября 2018

Могу ли я иметь выражение локального каталога во входящем адаптере 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 Ответ

0 голосов
/ 23 октября 2018

Невозможно разрешить 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"/>
...