为什么 PollSkipStrategy.skipPoll 方法在从队列轮询的每条消息上被调用?

Why PollSkipStrategy.skipPoll method is getting called on every message polled from queue?

我正在使用入站轮询器来处理来自回退队列的失败请求。对于调度,我使用玉米表达式 '0 0/2 * * * *' 即每两分钟执行一次轮询。按照 corn 的计划工作正常,但是 PollSkipStrategy.skipPoll 方法会为每条轮询的消息调用。我的印象是,轮询跳过策略将对每个轮询执行一次,而不是对每个轮询记录执行一次。我有 PollSkipStrategy.skipPoll 的实现,其中 returns 是真还是假取决于人。我在这里遗漏了什么?这是我的配置

    <bean id="RegistrationEventPoller"
        class="com.poller.RegistrationEventPoller">
        <property name="RegistrationEventRetryCount" value="$env{RegistrationEventRetryCount}"/>
    </bean>

    <bean id="PollSkipAdvice" class="org.springframework.integration.scheduling.PollSkipAdvice">
        <constructor-arg ref="PollSkipStrategy"/>
    </bean>

    <bean id="PollSkipStrategy"
        class="com..poller.PollSkipStrategy">
        <property name="RegistrationPollerOnOff" value="$env{RegistrationPollerOnOff}"/>
    </bean>

该建议是对整个流程(MessageSource.receive() 和发送消息)的环绕建议。当轮询器触发时,它会调用最多 maxMessagesPerPoll 的流程,所以,是的,实际上会为轮询中找到的每条消息调用建议,而不仅仅是在第一个轮询中。如果某些情况阻止您处理消息,它只是提供一种停止调用消息源的机制。

4.2 中添加了一个更复杂的 Smart Polling 功能,它为您提供了更大的灵活性。