我有一个入站文件通道适配器,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}]]
答案 0 :(得分:7)
在适配器上设置auto-startup =“false”(默认情况下为true)。
您可以手动启动它获取对它的引用并调用fileWatcher.start()。如果包含集成MBean导出器,也可通过JMX使用。
或者,您可以向&lt; control-bus /&gt;发送消息。在其有效载荷中包含'@ fileWatcher.start()'。
哦;我刚刚注意到你已经拥有它了。
不要调用context.start() - 它将启动所有bean,无论它们的自动启动设置如何。
自动启动控件,错误,自动启动 - 您手动启动上下文。