【问题标题】:Spring Expression Language adding timestampSpring Expression Language 添加时间戳
【发布时间】:2016-12-19 15:30:53
【问题描述】:

我的程序使用 HTTP 请求从 API 中提取文章。要查看已经从 API 中提取了哪些文章,需要使用时间戳。现在我的问题是,我的程序只能在 3 天的时间内提取文章。而不是更多。即它不应超过当前时间戳。这意味着,如果当前时间是周三 14:00,那么从周一、周二到现在(周三 14:00)的文章应该被拉取。 这里的第一个链接收最后一个时间戳文件, 我的代码是:

<int:channel id="timestampFile" />

    <int:chain input-channel="timestampFile" output-channel="timestampWithHeaders">
            <file:file-to-string-transformer delete-files="false" charset="UTF-8" />
        <int:header-enricher >
            <int:header name="beginTime" expression="payload" />
            <int:header name="endTime" expression="new Long(payload) + new Long(${abc.poll.frequency})" />
            <int:header name="offset" value="0"/>
        </int:header-enricher>
    </int:chain>

如何检查结束时间是否距开始时间 3 天且不应超过当前时间戳?

【问题讨论】:

    标签: spring spring-integration spring-el


    【解决方案1】:

    您可以简单地比较长值:

    endTime < beginTime + 60000*60*24*3
    

    【讨论】:

    • 这样做只会确保结束时间在开始时间的 3 天内。但是,我还应该在发出请求之前检查文件 last-timestamp 中的时间戳,并在需要时进行调整。如果超过 3 天,则必须将其重置为 now-3days。即如果结束时间戳在未来,它必须减少到当前时间戳。我该怎么做?
    • 未来的时间戳怎么办?您可能需要一个自定义 SpEL 函数来操作文件时间戳。
    • 谢谢。我写了一个函数,限制结果不大于当前时间。
    • 我还有一个问题。如何直接使用 SpEL 进行比较?我的意思是我有什么办法,如果 endTime
    • 我必须为此使用过滤器表达式吗?
    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2013-10-27
    • 2011-04-26
    相关资源
    最近更新 更多