Как запустить / остановить nt-aws: s3-inbound-channel-adapter вручную - PullRequest
0 голосов
/ 09 октября 2018

Как настроить запуск / остановку адаптера входящего канала aws s3.Я хочу установить auto-startup = "false" изначально и запускать вручную при запуске сервера. Ищем решение, аналогичное приведенному ниже, для адаптера входящего канала файлов.

inboundFileAdapterChannel.send (new GenericMessage("@ 's3FilesChannelId.adapter'.start ()"));

Config:

Если я попробую такой же подход для входящего канала адаптера s3.Я получаю сообщение об ошибке ниже


Приложение не удалось запустить


Описание:

Компонент требует компонент с именем 's3FilesChannelId.adapter', который не можетбыть найденным.

Действие:

Попробуйте определить bean-компонент с именем 's3FilesChannelId.adapter' в вашей конфигурации.

1 Ответ

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

Давайте предположим, что у нас есть адаптер канала, подобный этому:

<int-aws:s3-inbound-channel-adapter id="s3Inbound"
                                    channel="s3Channel"
                                    session-factory="s3SessionFactory"
                                    auto-create-local-directory="true"
                                    auto-startup="false"
                                    delete-remote-files="true"
                                    preserve-timestamp="true"
                                    filename-pattern="*.txt"
                                    local-directory="."
                                    remote-file-separator="\"
                                    local-filename-generator-expression="#this.toUpperCase() + '.a' + @fooString"
                                    comparator="comparator"
                                    temporary-file-suffix=".foo"
                                    local-filter="acceptAllFilter"
                                    remote-directory-expression="'foo/bar'">
    <int:poller fixed-rate="1000"/>
</int-aws:s3-inbound-channel-adapter>

Обратите внимание на auto-startup="false" и id="s3Inbound".

Итак, он не собираетсязапускаться автоматически после инициализации контекста приложения.Однако, используя этот s3Inbound id, мы можем сделать это вручную, когда это будет удобно для нас.

Ваша история о inboundFileAdapterChannel пока неясна, но вы все равно можете ввести Lifecycle для упомянутого канального адаптера.и выполните его start():

@Autowired
@Qualifier("s3Inbound")
private Lifecycle s3Inbound;

...

this.s3Inbound.start();

Часть кода о inboundFileAdapterChannel кажется ссылкой на подход Control Bus, но это уже немного другая история: https://docs.spring.io/spring-integration/docs/current/reference/html/system-management-chapter.html#control-bus

...