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
答案 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);