如何设置ActiveMQ.DLQ队列的到期时间?
作为一名操作人员(而不是开发人员),我尝试在集成到JBoss Fuse 6.2中的ActiveMQ.DLQ上设置过期时间,以确保KahaDB的文件夹不会超出磁盘空间,但下面的设置似乎对队列消息没有任何作用,而是将它们复制到ActiveMQ.Advisory.Producer.queue.ActiveMQ.DLQ两次如何设置ActiveMQ.DLQ队列的到期时间?,activemq,Activemq,作为一名操作人员(而不是开发人员),我尝试在集成到JBoss Fuse 6.2中的ActiveMQ.DLQ上设置过期时间,以确保KahaDB的文件夹不会超出磁盘空间,但下面的设置似乎对队列消息没有任何作用,而是将它们复制到ActiveMQ.Advisory.Producer.queue.ActiveMQ.DLQ两次 ... <policyEntry queue=">" producerFlowControl="false"> <deadLetterStrategy
...
<policyEntry queue=">" producerFlowControl="false">
<deadLetterStrategy>
<sharedDeadLetterStrategy expiration="300000"/>
</deadLetterStrategy>
</policyEntry>
...
对此有何想法?过期邮件的默认操作是将其发送到DLQ。您需要避免处理过期消息,这意味着:丢弃它们。在DLQ上添加
processExpired=“false”
可以解决此问题
(引自)
要让ActiveMQ丢弃过期消息,请在死信策略中将processExpired属性配置为false:
...
您的死信策略
很好,必须能够正常工作,但您不能这样测试,因为过期时间是由尝试交付给消费者的业务代码设置的,当过期时间失败时,它会通过更改过期时间将消息发送给DLQ。
您可以通过将setjmsexprivation
(生存时间)设置为1,将消息发送到您想要的任何队列进行测试。例如,这样,如果processExpired=“true”
,消息将不会传递并直接发送到DLQ
之所以创建了ActiveMQ.advision.Producer.Queue.ActiveMQ.DLQ
,是因为您有一个生产者向ActiveMQ.DLQ
发送了消息。
因为您已向ActiveMQ.DLQ
发送了4条消息,所以ActiveMQ.advical.Producer.Queue.ActiveMQ.DLQ
中有8条消息,因为此主题在生产者启动时接收一条消息,在生产者停止消息时接收另一条消息,这意味着您的JBOSS FUSE管理控制台创建了一个用于发送消息的连接,并在此之后停止发送消息
请注意,默认情况下,ActiveMQ将永远不会使发送到DLQ的消息过期,如果您想将它们保留7天,可以设置
谢谢。我们的策略是保留最后7天的消息,以便在需要进行故障排除/调试时可以检查DLQ消息。想知道如何在activemq.xml文件中设置它吗?如果他们想处理过期消息而不是丢弃它们,那么这不应该是
processExpired=“false”
必须是真的吗?也许op可以更详细地阐述一下:我理解消息应该在过期日期发布,而不是保留。在这种情况下,设置为false将是right@thst设置processExpired=“false”告诉死信策略(在DLQ之前的代理级别上)不要处理过期消息,这样它们将被丢弃而不是发送到DLQ,据我所知,op guy需要消息在DLQ上可用7天(包括过期消息),因此,processExpired必须为true才能将所有消息发送到DLQ
ActiveMQ.Advisory.Producer.Queue.ActiveMQ.DLQ 0 0 0 8 0 0
ActiveMQ.DLQ 4 0 0 4 0 0
<broker...>
<destinationPolicy>
<policyMap>
<policyEntries>
<!-- Set the following policy on all queues using the '>' wildcard -->
<policyEntry queue=">">
<!--
Tell the dead letter strategy not to process expired messages
so that they will just be discarded instead of being sent to
the DLQ
-->
<deadLetterStrategy>
<sharedDeadLetterStrategy processExpired="false" />
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
...
</broker>