0

我有一个入站文件通道适配器,其auto-startup属性设置为false. 这个适配器是我的应用程序的起点;如果它没有发送通知文件系统的消息,我希望其他一切都是惰性的。

但是,在启动我的上下文时,消息开始流经系统。为什么?

配置:

<int-file:inbound-channel-adapter auto-startup="false" id="fileWatcher" directory="${input.dir}" channel="incomingFiles">
    <int:poller fixed-rate="1000"></int:poller>
</int-file:inbound-channel-adapter>

<int:channel id="incomingFiles"></int:channel>

主要方法:

public static void main(String[] args) { 
    logger.info("Started application");
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring-config/*.xml");
    context.start();
}

日志:

[...]
12:06:56.743 [main] INFO  o.s.i.e.SourcePollingChannelAdapter - started fileWatcher
12:06:56.770 [task-scheduler-6] INFO  o.s.i.file.FileReadingMessageSource - Created message: [[Payload=C:\input\From Spreadsheet.txt][Headers={timestamp=1343214416770, id=b8e92486-d469-406e-8787-df78e23b287a}]]
4

1 回答 1

8

在适配器上设置 auto-startup="false"(默认为 true)。

您可以手动启动它以获取对它的引用并调用 fileWatcher.start()。如果您包含集成 MBean 导出器,这也可通过 JMX 获得。

或者,您可以向其有效负载中包含“@fileWatcher.start()”的 <control-bus /> 发送消息。

哦; 我刚刚注意到你已经有了。

不要调用 context.start() - 这将启动所有 bean,无论它们的自动启动设置如何。

自动启动控件,错误,自动启动 - 您正在手动启动上下文。

于 2012-07-25T11:55:29.250 回答