重传策略

功能 > 消费者功能 > 重传策略

重传策略

关于何时将消息重新传递到客户端的详细信息,请参阅 消息重传和 DLQ 处理 部分。您可以配置 RedeliveryPolicy 在您的 ActiveMQConnectionFactoryActiveMQConnection 上,以自定义重传的具体方式。

您可以使用 Java 代码、Spring 或 连接配置 URI 来自定义此项。

可用属性

属性 默认值 描述
backOffMultiplier 5 回退倍增器。
collisionAvoidanceFactor 0.15 如果启用,则为碰撞避免范围的百分比。
initialRedeliveryDelay 1000L 初始重传延迟(以毫秒为单位)。
maximumRedeliveries 6 设置消息重传的最大次数,超过该次数将被视为 **中毒药丸** 并返回到代理,以便将其发送到死信队列。设置为 -1 表示无限次重传。
maximumRedeliveryDelay -1 设置如果 useExponentialBackOff 选项已设置,将应用的最大传递延迟。(使用值 -1 来定义不应用最大值)(v5.5)。
redeliveryDelay 1000L 如果 initialRedeliveryDelay=0 时的传递延迟(v5.4)。
useCollisionAvoidance false 重传策略是否应使用碰撞避免。
useExponentialBackOff false 是否应使用指数回退,即以指数方式增加超时时间。

每个目的地的重传策略

从 ActiveMQ Classic v5.7.0 开始,您现在可以在每个目的地基础上配置 RedeliveryPolicyActiveMQConnection 工厂类现在公开 RedeliveryPolicyMap 属性,该属性允许使用命名目的地或目的地通配符来分配重传策略。下面的代码片段展示了如何为主题和队列配置不同的 RedeliveryPolicy

ActiveMQConnection connection ...  // Create a connection

RedeliveryPolicy queuePolicy = new RedeliveryPolicy();
queuePolicy.setInitialRedeliveryDelay(0);
queuePolicy.setRedeliveryDelay(1000);
queuePolicy.setUseExponentialBackOff(false);
queuePolicy.setMaximumRedeliveries(2);

RedeliveryPolicy topicPolicy = new RedeliveryPolicy();
topicPolicy.setInitialRedeliveryDelay(0);
topicPolicy.setRedeliveryDelay(1000);
topicPolicy.setUseExponentialBackOff(false);
topicPolicy.setMaximumRedeliveries(3);

// Receive a message with the JMS API
RedeliveryPolicyMap map = connection.getRedeliveryPolicyMap();
map.put(new ActiveMQTopic(">"), topicPolicy);
map.put(new ActiveMQQueue(">"), queuePolicy);

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。