Spring Integration Delayer-消息保留在持久性消息存储库中

时间:2017-09-26 01:37:53

标签: spring spring-integration

下面是我在我的应用程序中使用的延迟代码。输出通道checkMessageInProgress是一个数据库存储过程调用,它将检查是否需要处理或延迟消息。如果需要再次延迟消息,则重试计数会递增。 3次延迟后,将引发自定义应用程序异常。我正在使用jdbc消息存储来获取延迟消息。

以下代码正常工作,可以延迟消息。我看到大量的消息被延迟器延迟,有时我观察到消息没有从消息存储(消息表)中删除,尽管消息已成功处理。配置是否有问题,或者是否有任何方法可以调试未被删除邮件的原因

<int:chain input-channel="delayerChannel"
output-channel="checkMessageInProgress">
<int:header-enricher>
<!-- Exception/ERROR handling for flows originating from Delayer -->
    <int:header name="errorChannel" value="exceptionChannel"
        overwrite="true" />
    <int:header name="retryCount" overwrite="true" type="int"
        expression="headers['retryCount'] == null ? 0 : headers['retryCount'] + 1" />
</int:header-enricher>
<!-- If retryCount maxed out -discard message and log it in error table -->
<int:filter expression="(headers['retryCount'] lt 3)"
    discard-channel="raiseExceptionChannel">
</int:filter>
<!-- Configurable delay - fetch from property file -->
<int:delayer id="Delayer" default-delay="${timeout}"
    message-store="mymessageStore">

</int:delayer>

0 个答案:

没有答案