<bean id="inFileHandler"
class="com.yahoo.FileProcessHandler" />
<bean id="executorService" class="java.util.concurrent.Executors" factory-method="newSingleThreadExecutor" destroy-method="shutdownNow" />
<int:channel id="inChannel" />
<int:channel id="outChannel">
<int:queue capacity="5" />
</int:channel>
<bean id="sftpFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="${SFTP_HOST}"></property>
<property name="port" value="${SFTPPORT}"></property>
<property name="user" value="${SFTPUSERNAME}"></property>
<property name="password" value="${SFTPPASSWORD}"></property>
</bean>
<sftp:inbound-channel-adapter id="ftpInBound" channel="inChannel"
session-factory="sftpFactory"
delete-remote-files="true" remote-directory="/Files"
local-directory="file:C:/Bhaji">
<int:poller id="poller" fixed-rate="10000"/>
</sftp:inbound-channel-adapter>
<int:service-activator input-channel="inChannel"
output-channel="nullChannel" ref="inFileHandler" method="handler" />
并且FileProcess处理程序是
@Autowired
private ExecutorService executorService;
private static Logger log = LoggerFactory.getLogger(FileProcessHandler.class);
public File handler(File input) {
**//Doing some time taking process**
return input;
}
这里在执行时间过程中我不想轮询SFTP入站通道适配器。完成所需的时间后,轮询器应自动启动。
有没有办法做到这一点?有没有办法实现它?
答案 0 :(得分:0)
使用执行程序服务的是什么 - 让流程在轮询器线程上运行,并且在当前轮询完成之前不会发生下一轮询。
答案 1 :(得分:0)
您可以在fixed-delay
上使用fixed-rate
代替<poller>
并在TaskScheduler
主题中执行任务。在这种情况下,您一次只能有一个进程。下一个将在前一个结束后开始。