重试机制(Redelivery Policy)- 翻译

原文地址

http://activemq.apache.org/redelivery-policy

重新投递机制

何时将消息重新投递到客户端的详细信息,请参考消息重新投递和死信队列处理的章节。你可以在你的 ActiveMQConnectionFactory或者ActiveMQConnection上配置RedeliveryPolicy 完全可以自定义实现你想重新投递的工作方式

可用属性

属性默认值描述
backOffMultiplier5回退乘数
collisionAvoidanceFactor0.15如果启用,避免冲突的百分比范围
initialRedeliveryDelay1000L重新投递的毫秒数初始值
maximumRedeliveries6设置在消息被视为有毒消息(poisoned pill)并且返回给broker之前消息最大重试次数,达到最大次数后将进入死信队列。设置为-1表示无限重试
maximumRedeliveryDelay-1如果useExponentialBackOff选项被设置,设置的这个最大重试延迟数将起作用(如果设置为-1表示不使用)(v5.5)
redeliveryDelay1000L重新投递的延迟,如果 initialRedeliveryDelay = 0时起作用 (v5.4)
useCollisionAvoidancefalse重试机制应该使用冲突避免
useExponentialBackOfffalse应该使用指数的回退( exponential back-off ), 即已指数的形式增加超时

每个目的地的重试机制

从ActiveMq5.7开始,你可以针对每个目的地设置设置重试机制( RedeliveryPolicy),ActiveMQConnection factory class现在提供了RedeliveryPolicyMap属性 允许使用命名的目的地或者目的地通配符来分配重试机制( RedeliveryPolicy)。
下面的代码片段展示了如何给队列和主题分配一个不同的重试策略( 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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值