Camel ActiveMQ:使用基于JMSTimestamp的消息

时间:2017-09-06 15:28:01

标签: apache-camel activemq

我已经定义了一个Route,它消耗队列中的消息没有任何问题,现在我正在尝试使用已经在队列中的消息12小时,我有了使用{的想法{1}},但不知道如何将其与selector一起使用以满足12小时标准。

这是JMSTimestamp

Route

这是日期bean

<route id="INBOUND.RECEIVE.IN">
    <from
        uri="activemq:queue:QXL.INBOUND.RECEIVE.IN?selector=JMSTimestamp%3D${date.time}&amp;concurrentConsumers=10&amp;destination.consumer.prefetchSize=0&amp;deliveryPersistent=true&amp;username=admin01&amp;password=001!admin01001!" />
    <pipeline>
        <bean method="inboundReceive" ref="logipalServices"/>
    </pipeline>
</route>

1 个答案:

答案 0 :(得分:0)

根据您的解释,我认为您的选择器出了问题

JMSTimestamp%3D${date.time}表示JMSTimestamp = ${date.time}

这意味着您正在查找包含完全 JMSTimestamp的所有邮件。由于Date.getTime()以毫秒为单位返回时间,因此您不太可能从队列中检索任何消息。

我认为你应该尝试类似的事情:

JMSTimestamp > current date - 12 hours (pseudo code for selector)

我希望这会对你有所帮助。