【问题标题】:How to stop messages from going to Dead LetterQueue(DLQ) in Activemq after re-delivery policy重新投递策略后如何阻止消息进入 Activemq 中的死信队列(DLQ)
【发布时间】:2018-04-23 01:18:21
【问题描述】:
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

【问题讨论】:

    标签: java spring-boot activemq dead-letter


    【解决方案1】:

    你可以使用:

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

    【讨论】:

      【解决方案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)。

      【讨论】:

      • 能否添加到现有配置中。我并没有真正使用 xml 配置。我使用基于 Java 的配置。我希望消息在重试后被丢弃,而不是去 DLQ。
      猜你喜欢
      • 2017-02-18
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2022-07-22
      • 2021-07-31
      • 1970-01-01
      相关资源
      最近更新 更多