java - 如何在重投策略后阻止消息进入Activemq中的Dead LetterQueue(DLQ)

标签 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

最佳答案

问题是 - 您想用它们做什么?

在所有重新投递尝试都用尽后就将其丢弃?

配置丢弃插件

<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 )。

关于java - 如何在重投策略后阻止消息进入Activemq中的Dead LetterQueue(DLQ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47212136/

相关文章:

spring-boot - SpringBoot JPA错误

java - Spring Boot 上 H2 数据库的 HTTP 删除

java - 字符串到 HH :mm:ss time and finding the difference between 2 times

java - 如何在 Spring Boot 中测试对外部 api 的调用

估计聚合字符串相似度的 Java 库方法或算法?

jms - RabbitMQ 扇出交换(VirtualTopic 等效)

jms - ActiveMQ 中的路由

java - 一条消息被 2 个消费者消费

java - 为什么我们调用 Thread.start() 方法,而后者又调用 run 方法?

java - 在 Spring 中打开 Autowire