如何在重新传递策略后阻止消息在Activemq中转到Dead LetterQueue(DLQ)

时间:2017-11-09 21:48:18

标签: java spring-boot activemq dead-letter

private BrokerService createBroker() throws IOException, Exception {
         BrokerService broker = new BrokerService();KahaDBStore kaha=new KahaDBStore();
         File file =new File(path);
         TransportConnector connector = new TransportConnector();
         connector.setUri(new URI(DEFAULT_BROKER_URL));
         kaha.setDirectory(file);
         broker.addConnector(connector);
         broker.setPersistenceAdapter(kaha);
}

这是我的经纪人的配置。有人可以指定配置,我如何在重新发送策略后阻止邮件进入DLQ?

注意:我已经访问了这个http://activemq.apache.org/message-redelivery-and-dlq-handling.html

2 个答案:

答案 0 :(得分:2)

问题是 - 你想用它做什么呢?

在所有重新投放尝试都用尽后立即删除它们?

配置丢弃插件

<deadLetterStrategy>
   <discarding/>
</deadLetterStrategy>

或通过Java

PolicyEntry policy = new PolicyEntry();
policy.setDeadLetterStrategy(new DiscardingDeadLetterStrategy());
PolicyMap policyMap = new PolicyMap();
policyMap.setDefaultEntry(policy);
broker.setDestinationPolicy(policyMap);

永远不要耗尽重新发送并尝试直到消息通过?

这可能会导致错误消息 - 即具有损坏的有效负载的消息永远无法处理,必须将其删除以不中断流。如果您仍然需要此功能,请将客户端maximumRedelivery配置为-1(see docs)。

答案 1 :(得分:1)

您可以使用:

RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setMaximumRedeliveries(-1);