rocketmq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "lusong (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ROCKETMQ-196) sendMessageBack() will lost one retry message when slave prodvide consuming service
Date Thu, 11 May 2017 08:38:04 GMT

     [ https://issues.apache.org/jira/browse/ROCKETMQ-196?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

lusong updated ROCKETMQ-196:
----------------------------
    Description: 
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());"



  was:
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. 





> 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
>         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)

Mime
View raw message