【发布时间】:2020-07-18 00:37:49
【问题描述】:
我想设置以下内容
- individualDeadLetterStrategy 为每个队列设置 DL 队列前缀
- sharedDeadLetterStrategy 禁用对 DL 队列中过期消息的处理
- 为 DL 队列中的消息设置过期时间
在关注dl-queue-handling 时,我想出了以下不起作用的sn-ps
<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.SAXParseException;行号:74;列号:32;元素类型“过期”必须后跟属性规范“>”或“/>”
其中lineNumber: 74对应上面sn-p中的
另外,我假设给定队列名称的所有策略都应该在同一个 policyEntry 下,所以我也尝试了以下 sn-p:
<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.SAXParseException;行号:63;列号:72; cvc-complex-type.2.4.d:发现以元素“sharedDeadLetterStrategy”开头的无效内容。此时不需要子元素。
其中第 63 行对应于:sharedDeadLetterStrategy processExpired="false"
【问题讨论】: