我想设置以下内容
- 用于为每个队列设置 DL 队列前缀的individualDeadLetterStrategy
- sharedDeadLetterStrategy 用于禁止处理 DL 队列中的过期消息
- 为 DL 队列中的消息设置过期时间
关注dl-queue-handling ,我想出了以下不起作用的片段
<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;元素类型“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.SAXParseException;行号:63;列数:72; cvc-complex-type.2.4.d:发现以元素“sharedDeadLetterStrategy”开头的无效内容。此时不需要子元素。
其中第 63 行对应于:sharedDeadLetterStrategy processExpired="false"
最佳答案
正如您引用的文档中所述,过期
是一个属性。它不能单独存在于标签中。这是无效的 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>
关于activemq - 为死信队列中的消息设置 individualDeadLetterStrategy、sharedDeadLetterStrategy 和过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62957502/