我是Spring Integration的新手。弹簧集成2与石英调度器
我已经配置了Spring文件入站通道适配器,例如,
<file:inbound-channel-adapter channel="channel1" directory="${location}" prevent-duplicates="true" filename-pattern="*.csv">
<si:poller>
<si:interval-trigger interval="1000"/>
</si:poller>
</file:inbound-channel-adapter>
<si:service-activator input-channel="channel1" output-channel="channel2" ref="filenameGenerator" method="generate"/>
现在这工作正常。 但是这需要部署在集群环境中。我想确保群集中的多个实例不会尝试读取同一个文件。那么这样的工作会在这样的环境下进行?
如果没有,我可以使用Quartz调度这样的:
<file:inbound-channel-adapter channel="channel1" directory="${location}" prevent-duplicates="true" filename-pattern="*.csv">
<si:poller task-executor="taskExecutor" fixed-rate="1000"/>
</file:inbound-channel-adapter>
<si:service-activator input-channel="channel1" output-channel="channel2" ref="filenameGenerator" method="generate"/>
<bean id="taskExecutor" class="org.springframework.scheduling.quartz.SimpleThreadPoolTaskExecutor">
<property name="threadCount" value="20"/>
<property name="threadNamePrefix" value="consumer"/>
</bean>
将这项工作与解决我的问题? 或者我必须使用交易?
我希望问题很清楚。
感谢, 阿迪
再次重申这个问题, 问题是与文件在集群环境中入站通道适配器。当一个文件被放置在一个文件夹中时,它应该被拾取,处理并最终重命名它。 在群集中,虽然一个实例选取特定文件并仍在处理它,但另一个节点的文件适配器也会启动并尝试处理。第二个适配器失败,出现文件未找到异常,作为第一个适配器进程并在此期间重命名。那么,我能做些什么,这不会发生? – adi 2012-01-17 16:34:04