Давайте предположим, что у нас есть адаптер канала, подобный этому:
<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