Я новичок в Spring Integration.
Я настроил адаптер входящего канала для файла 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