rocketmq python消息堆积怎么办_RocketMQ实战之 消息重试

集群消费模式下,消息消费失败后,Broker会通过消息重试机制重新投递消息。

只有消费模式为 MessageModel.CLUSTERING(集群模式) 时,Broker才会自动进行重试,广播模式不会重试。

什么情况属于消息消费失败?消费端返回ConsumeConcurrentlyStatus.RECONSUME_LATER

消费端返回null

消费端抛出异常并且未被捕获对于一直消费不成功的消息达到最大重试次数(16次)后,会投递到死信队列并设置为消费成功

消息消费重试// 消息延迟级别定义

private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";

重试次数为1时,对应第一次发送时间间隔为10s,然后依次类推

RocketMQ采用了“时间衰减策略”进行消息的重复投递,即重试次数越多,消息消费成功的可能性越小。对于重试消息,会复制一个新的消息并备份Topic和QueueId投递到主题SCHEDULE_TOPIC_XXXX下,然后由定时任务进行调度重试,重试时在恢复到原来的队列

消息发送重试

消息发送失败后会自动重试,默认重试2次。可通过消息记录表记录消息的信息和发送状态,对发送失败的消息进行补偿/**设置消息发送失败时最大重试次数,默认2次*/

public void setRetryTimesWhenSendFailed(int retryTimesWhenSendFailed) {

this.retryTimesWhenSendFailed = retryTimesWhenSendFailed;

}

/**同步发送消息,并指定超时时间*/

public SendResult send(Message msg,long timeout) throws MQClientException, RemotingException, MQBrokerException, InterruptedException {

return this.defaultMQProducerImpl.send(msg, timeout);

}

https://juejin.im/post/5de8c60d518825126f371eff

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值