我是 Spring 集成的新手。
我已经配置了一个 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>
这会工作并解决我的问题吗?还是我必须使用事务?
我希望这个问题很清楚。
谢谢,阿迪