slaveReadEnable什么时候生效? #7504
Unanswered
hasaiki123
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
rocketmq使用的版本4.9.4
问题描述:
使用的架构为master-slave模式,并且master和slave的broker参数均设置了slaveReadEnable=false,我们做了如下测试,首先消费者未启动,生产者发送消息20条,等待master到slave的消息同步完成,之后停止master,并启动消费者,此时我们预想的是消费者无法从slave消费消息,但是实际上却消费了消息,无论我们消费者设置成pull或者push,都会从slave消费消息。请问slaveReadEnable是确保不会从slave消费消息吗?
为什么会设置slaveReadEnable参数:
我们采用master-slave模式,master会同步消费者的消费进度给slave,在某些极端的场景下,我们猜测可能会有重复消费消息的情况:如当消费者从master消费消息时,master突然宕机,而且由于同步消费进度是定时任务同步,因此slave的消费进度可能落后于master,如果此时重启消费者,那么消费者在内存中的消费进度会丢失,此时若继续可以从slave消费消息,则会造成消息的重复消费。
请问我上述的说明是否有误?比如一定不会出现slave的消费进度在同步时会与master不一致?如果没有,请问是否能让slave做备机,然后手动确认消息是否消费后,再让消费者处理。
Beta Was this translation helpful? Give feedback.
All reactions