Activemq 为死信队列中的消息设置individualDeadLetterStrategy、sharedDeadLetterStrategy和expiry
我想设置以下内容Activemq 为死信队列中的消息设置individualDeadLetterStrategy、sharedDeadLetterStrategy和expiry,activemq,broker,Activemq,Broker,我想设置以下内容 individualDeadLetterStrategy为每个队列设置DL队列前缀 SharedDeadLetter禁用DL队列中过期消息处理的策略 设置DL队列中消息的过期时间 在接下来的部分中,我提出了以下不起作用的片段 <destinationPolicy> <policyMap> <policyEntries> <policyEntry queue="&
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true"/>
</deadLetterStrategy>
</policyEntry>
<policyEntry queue=">">
<deadLetterStrategy>
<sharedDeadLetterStrategy processExpired="false" />
</deadLetterStrategy>
</policyEntry>
<policyEntry queue="CommandQueue">
<deadLetterStrategy>
<expiration="600000" />
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
错误:
类路径资源[activemq.XML]中的XML文档无效;嵌套异常为org.xml.sax.saxpasseeption;行号:74;栏目号:32;元素类型“expiration”后面必须跟属性规范“>”或“/>”
其中lineNumber:74对应于上面代码段中的行
或者,我假设给定队列名称的所有策略都应该在同一个policyEntry下,因此我也尝试了以下代码片段:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true"/>
<sharedDeadLetterStrategy processExpired="false" />
</deadLetterStrategy>
</policyEntry>
<policyEntry queue="CommandQueue">
<deadLetterStrategy>
<expiration="600000" />
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
错误:
原因:来自类路径资源[activemq.XML]的XML文档中的第63行无效;嵌套异常为org.xml.sax.saxpasseeption;行号:63;栏目号:72;cvc复杂类型.2.4.d:发现以元素“sharedDeadLetterStrategy”开头的无效内容。此时不需要子元素。
其中第63行对应于:sharedDeadLetterStrategy processExpired=“false”如您引用的文档中所述,
过期
是一个属性。它不能单独存在于标记中。这是无效的XML。您应该在个人死信策略中设置此选项
此外,您还可以在individualDeadLetterStrategy
上设置processExpired=“false”
请尝试以下方法:
这很有效。我有以下问题:1。个人DeadLetterStrategy和shareddeadletterstrategy的区别,何时使用2。ActiveMQ站点说要对DL队列消息应用到期,请在队列名称regex中指定,以避免死信队列,因此是否有一个regex允许我将到期应用于除死信队列之外的所有队列@justin您应该为这些后续问题创建新问题。如果我的回答针对您的原始问题,请将其标记为正确,以帮助将来有相同问题的其他用户。谢谢