0
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

4

2 回答 2

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(请参阅文档)。

于 2017-11-10T06:30:35.887 回答
1

您可以使用:

RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setMaximumRedeliveries(-1);
于 2018-01-17T12:08:25.940 回答