我已经配置了一个入站通道适配器来接收邮件,我设置了一个固定延迟= 15000的轮询器。
当max-messages-per-poll设置为低值(小于邮箱文件夹中的邮件数)时,触发器每15秒正确触发一次。
但是,如果将max-messages-per-poll设置为较高值,则每隔约2秒调用一次Pop3MailReceiver,并且不考虑固定延迟或cron设置。
我的错在哪里?
在此先感谢您的帮助。
<util:properties id="javaMailProperties">
<prop key="mail.pop3.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.pop3.socketFactory.fallback">false</prop>
<prop key="mail.store.protocol">pop3s</prop>
</util:properties>
<mail:inbound-channel-adapter id="mailAdapter"
store-uri="pop3s://xxxxxxxxxx%40xxxxxxxxx.xxxxx:xxxxxxxxx@xxxxxxx:xxx/inbox"
channel="receiveEmailChannel"
should-delete-messages="false"
java-mail-properties="javaMailProperties"
auto-startup="false">
<int:poller max-messages-per-poll="10" fixed-delay="15000"/>
</mail:inbound-channel-adapter>
<int:control-bus input-channel="receiveEmailChannel"/>
<int:channel id="receiveEmailChannel">
<int:interceptors>
<int:wire-tap channel="logger"/>
</int:interceptors>
</int:channel>
<int:logging-channel-adapter id="logger" level="DEBUG"/>
<int:service-activator input-channel="receiveEmailChannel" ref="mailNotificationDetector" method="receive"/>
答案 0 :(得分:1)
从documentation听起来这是预期的行为,轮询将重复进行,直到满足每个轮询的max-messages-poll数。
因此,当你的每次轮询最大消息数量很少时,一些轮询调用可以很快完成这个数字,你可以看到一个干净的固定延迟调用。当你的每次轮询最大消息数量很高时,可能会花费很多轮询来满足每次轮询最多消息的调用。