1 The environment is as follows:
2 Consumption process
Refer to Defaultmqpushconsumer consumption process 3 failover performance:
3.1 Message Pull Exception:
2015-08-12 11:47:13,215 [Pullmessageservice] ERROR Rocketmqclient-pullkernelimpl exception
Com.alibaba.rocketmq.remoting.exception.RemotingConnectException:connect to <10.10.81.94:10915> failed
At Com.alibaba.rocketmq.remoting.netty.NettyRemotingClient.invokeAsync (nettyremotingclient.java:666) ~[classes/: Na
At Com.alibaba.rocketmq.client.impl.MQClientAPIImpl.pullMessageAsync (mqclientapiimpl.java:449) ~[classes/:na]
At Com.alibaba.rocketmq.client.impl.MQClientAPIImpl.pullMessage (mqclientapiimpl.java:430) ~[classes/:na]
At Com.alibaba.rocketmq.client.impl.consumer.PullAPIWrapper.pullKernelImpl (pullapiwrapper.java:237) ~[classes/: Na
At Com.alibaba.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl.pullMessage ( defaultmqpushconsumerimpl.java:513) ~[classes/:na]
At Com.alibaba.rocketmq.client.impl.consumer.PullMessageService.pullMessage (pullmessageservice.java:82) [Classes /:na]
At Com.alibaba.rocketmq.client.impl.consumer.PullMessageService.run (pullmessageservice.java:98) [Classes/:na]
At Java.lang.Thread.run (thread.java:744) [na:1.7.0_51]
3.2 Rebalance timed task throws an exception:
2015-08-12 11:46:52,826 [Rebalanceservice] WARN Rocketmqclient-getconsumeridlistbygroup exception, 10.10.81.94:10915 Consumertestgroup
Com.alibaba.rocketmq.remoting.exception.RemotingConnectException:connect to <10.10.81.94:10915> failed
At Com.alibaba.rocketmq.remoting.netty.NettyRemotingClient.invokeSync (nettyremotingclient.java:641) ~[classes/: Na
At Com.alibaba.rocketmq.client.impl.MQClientAPIImpl.getConsumerIdListByGroup (mqclientapiimpl.java:625) ~[classes /:na]
At Com.alibaba.rocketmq.client.impl.factory.MQClientInstance.findConsumerIdList (mqclientinstance.java:1025) [ Classes/:na]
At Com.alibaba.rocketmq.client.impl.consumer.RebalanceImpl.rebalanceByTopic (rebalanceimpl.java:282) [Classes/:na ]
At Com.alibaba.rocketmq.client.impl.consumer.RebalanceImpl.doRebalance (rebalanceimpl.java:248) [Classes/:na]
At Com.alibaba.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl.doRebalance ( DEFAULTMQPUSHCONSUMERIMPL.JAVA:250) [Classes/:na]
At Com.alibaba.rocketmq.client.impl.factory.MQClientInstance.doRebalance (mqclientinstance.java:925) [Classes/:na ]
At Com.alibaba.rocketmq.client.impl.consumer.RebalanceService.run (rebalanceservice.java:49) [Classes/:na]
At Java.lang.Thread.run (thread.java:744) [na:1.7.0_51]
3.3 Update offset to broker's timed task throws an exception:
2015-08-12 11:46:49,607 [Mqclientfactoryscheduledthread] ERROR Rocketmqclient-updateconsumeoffsettobroker exception , MessageQueue [Topic=failovertesttopic-v2, Brokername=broker-index-a, Queueid=0]
Com.alibaba.rocketmq.remoting.exception.RemotingConnectException:connect to <10.10.81.94:10915> failed
At Com.alibaba.rocketmq.remoting.netty.NettyRemotingClient.invokeOneway (nettyremotingclient.java:691) ~[classes/ : NA]
At Com.alibaba.rocketmq.client.impl.MQClientAPIImpl.updateConsumerOffsetOneway (mqclientapiimpl.java:780) ~[ Classes/:na]
At Com.alibaba.rocketmq.client.consumer.store.RemoteBrokerOffsetStore.updateConsumeOffsetToBroker ( remotebrokeroffsetstore.java:200) ~[classes/:na]
At Com.alibaba.rocketmq.client.consumer.store.RemoteBrokerOffsetStore.persistAll (Remotebrokeroffsetstore.java : 139) ~[classes/:na]
At Com.alibaba.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl.persistConsumerOffset ( defaultmqpushconsumerimpl.java:265) [Classes/:na]
At Com.alibaba.rocketmq.client.impl.factory.MQClientInstance.persistAllConsumerOffset (mqclientinstance.java:344 ) [Classes/:na]
At com.alibaba.rocketmq.client.impl.factory.mqclientinstance.access$4 (mqclientinstance.java:339) [Classes/:na]
At Com.alibaba.rocketmq.client.impl.factory.mqclientinstance$5.run (mqclientinstance.java:250) [Classes/:na]
At Java.util.concurrent.executors$runnableadapter.call (executors.java:471) [na:1.7.0_51]
At Java.util.concurrent.FutureTask.runAndReset (futuretask.java:304) [na:1.7.0_51]
At java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.access$301 ( scheduledthreadpoolexecutor.java:178) [na:1.7.0_51]
At Java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.run (Scheduledthreadpoolexecutor.java : 293) [na:1.7.0_51]
At Java.util.concurrent.ThreadPoolExecutor.runWorker (threadpoolexecutor.java:1145) [na:1.7.0_51]
At Java.util.concurrent.threadpoolexecutor$worker.run (threadpoolexecutor.java:615) [na:1.7.0_51]
At Java.lang.Thread.run (thread.java:744) [na:1.7.0_51]
3.4 Scheduled Tasks
See failover producer performance of the scheduled task MQClientInstance.this.updateTopicRouteInfoFromNameServer
It updates the topic route to the Mqclientinstance brokeraddrtable, which stores the mappings between the Brokername and the broker addresses.
3.1 of the message extraction process from the Defaultmqpushconsumer consumption process:
The broker address is obtained based on Broker_name before the message is pulled, and the slave address of the broker is eventually obtained.
So the message will be pulled from the slave.