Весной интеграция - я пытаюсь читать файл с FTP и обрабатывать его. Как мы можем достичь метастора и обработать его без опроса. В приведенной ниже конфигурации, чтобы избежать чтения одного и того же файла, если перезагрузка сервера произойдет, я представил хранилище сообщений в ftpChannel. Теперь процессор файла является активатором службы, который нуждается в опросе. Как я могу избежать опроса в активаторе службы и немедленно прочитать файл из очереди ftpChannel. Если я использую int: dispatcher, тогда я не мог бы использовать хранилище сообщений.Весенняя интеграция - прочитайте файл с FTP и обработайте его. Как мы можем достичь метастора и обработать его без опроса
Как мы можем решить это?
<int:channel id="ftpChannel">
<int:queue message-store="mongoDbMessageStore" />
<!-- <int:dispatcher task-executor="taskExecutor"/> -->
</int:channel>
<bean id="mongoDbMessageStore"
class="org.springframework.integration.mongodb.store.MongoDbMessageStore">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="collectionName" value="ftpInfo" />
</bean>
<int-ftp:inbound-channel-adapter id="ftpInbound"
channel="ftpChannel" session-factory="ftpClientFactory" charset="UTF-8"
auto-create-local-directory="true" delete-remote-files="false"
filename-pattern="*.gz" remote-directory="/myfilerepo/#{istDate.getISTDate()}"
remote-file-separator="/" local-filename-generator-expression="#this.toUpperCase()"
temporary-file-suffix=".writing" preserve-timestamp="true"
local-directory="/temp/spring/#{istDate.getISTDate()}">
<int:poller cron="0-5 0/5 * * * ?" max-messages-per-poll="-1"/>
</int-ftp:inbound-channel-adapter>
<int:service-activator id="jobServiceActivator"
input-channel="ftpChannel" ref="triggerJobLauncher" method="launch">
<int:poller fixed-delay="10" />
</int:service-activator>
<!-- job context -->
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="transactionManager"
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>
<!-- job context -->
Я пытаюсь эту технику., –
'<идентификатор = класс компонента "metadataStore"= "org.springframework.integration.metadata.PropertiesPersistingMetadataStore"/> <боб ID = "acceptOnceFilter" класс =" org.springframework. integration.file.filters.FileSystemPersistentAcceptOnceFileListFilter "> \t \t <конструктор-Arg имя =" магазин»исх = "metadataStore"/> \t \t <конструктор-Arg имя = "" значение = "префикс тест-"/> \t ' –
Его работа .. !! Спасибо –