Spring integration 使用Spring集成轮询文件时的问题

Spring integration 使用Spring集成轮询文件时的问题,spring-integration,polling,Spring Integration,Polling,我的请求。是在指定的时间间隔(例如10分钟)轮询目录。如果在目录中找到一个特定扩展名为*.xml的文件,则在指定的时间间隔(例如10分钟)后,它只会使用(即拾取和删除)该文件并打印名称,否则它会发送一封邮件,表明该文件未被拾取(即,已使用)或该文件未出现 有两种选择,一种是通过Spring集成,另一种是核心Java的WatchService。以下是我到目前为止编写的Spring Integration中的代码: <int:channel id="fileChannel" /> <

我的请求。是在指定的时间间隔(例如10分钟)轮询目录。如果在目录中找到一个特定扩展名为*.xml的文件,则在指定的时间间隔(例如10分钟)后,它只会使用(即拾取和删除)该文件并打印名称,否则它会发送一封邮件,表明该文件未被拾取(即,已使用)或该文件未出现

有两种选择,一种是通过Spring集成,另一种是核心Java的WatchService。以下是我到目前为止编写的Spring Integration中的代码:

<int:channel id="fileChannel" />
<int:channel id="processedFileChannel" />

<context:property-placeholder location="localProps.properties" />

    <int:poller default="true" fixed-rate="10000" id="poller"></int:poller>

    <int-file:inbound-channel-adapter
        directory="file:${inbound.folder}" channel="fileChannel"
        filename-pattern="*.xml" />

    <int:service-activator input-channel="fileChannel"
        ref="fileHandlerService" method="processFile" output-channel="processedFileChannel"/>

    <bean id="fileHandlerService" class="com.practice.cmrs.springintegration.Poll" />

上面的代码正在成功轮询文件夹中的特定文件模式。现在我有两件事要做:

1) 在特定时间间隔(可配置)后停止轮询,例如10分钟

2) 检查文件夹中是否存在具有特定扩展名的文件。。。如果文件在那里(它使用然后删除),否则它会向一群人发送电子邮件(电子邮件部分完成)

请在以上两点上帮助我

你可以用a来做那样的事情

如果/当轮询结果为消息时,您可以调整轮询器和/或采取不同的操作

版本4.2引入了AbstractMessageSourceAdvice。通知链中属于该类的任何通知对象都只应用于接收操作。此类类实现以下方法:

beforeceive(消息源)
在MessageSource.receive()方法之前调用此方法。它允许您此时检查和/或重新配置源。返回false将取消此轮询(类似于上面提到的PollSkipAdvice)

messageafterreceive(消息结果、消息源)
此方法在receive()方法之后调用;同样,您可以重新配置源代码,或者根据结果采取任何操作(如果源代码没有创建消息,则结果可以为null)。您甚至可以返回不同的消息

你可以用a来做那样的事情

如果/当轮询结果为消息时,您可以调整轮询器和/或采取不同的操作

版本4.2引入了AbstractMessageSourceAdvice。通知链中属于该类的任何通知对象都只应用于接收操作。此类类实现以下方法:

beforeceive(消息源)
在MessageSource.receive()方法之前调用此方法。它允许您此时检查和/或重新配置源。返回false将取消此轮询(类似于上面提到的PollSkipAdvice)

messageafterreceive(消息结果、消息源)
此方法在receive()方法之后调用;同样,您可以重新配置源代码,或者根据结果采取任何操作(如果源代码没有创建消息,则结果可以为null)。您甚至可以返回不同的消息


能给我举个简单的例子吗。。。。我也没有从网上得到任何例子。。。所以它变得越来越难。。。。举个例子会很有帮助。一个也不能,但是你可以在一个
CompoundTriggerAdvice
中使用两个cron触发器。我能举个简单的例子吗。。。。我也没有从网上得到任何例子。。。所以它变得越来越难。。。。举个例子会很有帮助,一个也不能,但可以在一个
CompoundTriggerAdvice
中使用两个cron触发器。
beforeReceive(MessageSource<?> source)
Message<?> afterReceive(Message<?> result, MessageSource<?> source)