我们使用来自主题的camel路由为队列中的消息配置timeToLive,如下所示:

<route errorHandlerRef="BrokerErrorHandlerEvents">
            <description>MQTT Events</description>
            <from uri="ourbroker:topic:events.>"/>
            <setHeader headerName="myUser">
                <simple>${headers.JMSXUserID}</simple>
            </setHeader>
            <setHeader headerName="myTopic">
                <simple>ssc.${headers.JMSDestination}</simple>
            </setHeader>
            <setHeader headerName="msgReceived">
                <simple>${headers.JMSTimestamp}</simple>
            </setHeader>
            <to uri="ourbroker:queue:ourqueue.ourbroker_events?
timeToLive=600000"/>
        </route>

然后我们从ActiveMQ Web界面发送一些测试消息 . 在timeToLive(10分钟)之后,我们希望消息转到DLQ . 在此之后,消息将保留在其队列中 . 有趣的是,如果我们从Web界面访问队列内容,所有消息似乎都被“处理”并在此时发送到DLQ(好像我们的访问触发了检查) .

当我们从Web界面访问队列时,为什么会发生这种情况?我们是否缺少一些配置参数来安排检查过期消息? (注意:我们在代理中有schedulerSupport =“true”)