为死信队列中的邮件设置个人死信策略、共享死信策略和过期时间



我想设置以下内容

  1. 为每个队列设置DL队列前缀的策略
  2. sharedDeadLetter禁用DL队列中过期消息处理的策略
  3. 设置DL队列中消息的过期时间

在接下来的dl队列处理中,我提出了以下不起作用的片段

<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。ax.SAXParseException;行号:74;columnNumber:32;元素类型";过期";必须跟在属性规范之后>quot;或"/>quot

其中lineNumber:74对应于<expiration=";600000〃/>。

或者,我假设给定队列名称的所有策略都应该在相同的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。ax.SAXParseException;行号:63;列编号:72;cvc复杂类型2.4.d:发现以元素"sharedDeadLetterStrategy"开头的无效内容。此时不需要任何子元素

其中第63行对应于:sharedDeadLetterStrategy processExpired=";false">

如您引用的文档中所述,expiration属性。它不可能单独存在于标签中。这是无效的XML。您应该在individualDeadLetterStrategy上设置此项。

此外,您还可以在individualDeadLetterStrategy上设置processExpired="false"

试试这个:

<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true" processExpired="false" expiration="600000"/>
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>

相关内容

  • 没有找到相关文章

最新更新