Spring Integration - 未考虑邮件入站 channel 适配器的延迟轮询器

标签 spring email integration


我已经配置了一个入站 channel 适配器来接收邮件,并设置了一个固定延迟 = 15000 的轮询器。
当 max-messages-per-poll 设置为较低值(小于邮箱文件夹中的邮件数)时,触发器每 15 秒正确触发一次。
但如果 max-messages-per-poll 设置为较高值,则 Pop3MailReceiver 大约每 2 秒调用一次,并且不考虑固定延迟或 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"/>

最佳答案

来自documentation听起来这是预期的行为,轮询将重复进行,直到满足每次轮询的最大消息数。

因此,当您的每次轮询的最大消息数较低时,这个数字可以通过一些轮询调用来满足,这些轮询调用可能很快完成,并且您可以看到一个干净的固定延迟调用。当您的 max-messages-per-poll 较高时,可能需要相当多的 poll 调用才能满足 max-messages-per-poll 调用。

关于Spring Integration - 未考虑邮件入站 channel 适配器的延迟轮询器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381485/

相关文章:

java - 使用 Spring Data JPA 捕获 SQL 异常

Spring 3.0 与 Java EE 6.0

oracle - 为什么这封电子邮件被截断了?

使用 Exchange Activesync 的 Android 邮件搜索

ssl - IDEAL 的 OpenSSL 证书

matlab - 使用梯形规则计算二重积分 (Matlab)

java - 如何设置 headers Spring oauth AccessTokenRequest

html - 内容与表格底部不对齐

c - 我想将两个模块合二为一。第一个是方程;第二个取该方程的积分

java - 如何将 2 个变量与 <c :if> 进行比较