[
https://issues.apache.org/jira/browse/ROCKETMQ-196?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
dongeforever updated ROCKETMQ-196:
----------------------------------
Fix Version/s: 4.2.0-incubating
> sendMessageBack() will lost one retry message when slave prodvide consuming
> service
> -----------------------------------------------------------------------------------
>
> Key: ROCKETMQ-196
> URL: https://issues.apache.org/jira/browse/ROCKETMQ-196
> Project: Apache RocketMQ
> Issue Type: Bug
> Components: rocketmq-client
> Affects Versions: 4.0.0-incubating
> Reporter: lusong
> Assignee: Xiaorui Wang
> Fix For: 4.2.0-incubating
>
> Attachments: consumerSendMsgBack.png, sendMessageBack.png
>
>
> sendMessageBack() will lost one retry message when slave prodvide
> consuming service. Need change retry message's delayLevel =
> (2+reconsumeTims).
> Normally, first retry message's deleylevel=3 and reconsumetimes=1, according
> to SendMessageProcessor.consumerSendMsgBack()(please check
> consumerSendMsgBack.png).
> But when master is down, send retry message will go to
> DefaultMQPushConsumerImpl.sendMessageBack() (please check
> sendMessageBack.png),
> the retry message's delaylevel=3 and reconsumetime=0 according to this
> statement:
> "newMsg.setDelayTimeLevel(3 + msg.getReconsumeTimes());"
> This will cause lose one retry message finally. Because generate DLQ or
> finish consuming according delaylevel.
> For DefaultMQPushConsumerImpl.sendMessageBack(),
> The logic should be changed to :
> "newMsg.setDelayTimeLevel(2 + msg.getReconsumeTimes());"
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)