rocketmq3.26研究之Failover下consumer的表现

1 环境如下:


2 消费流程

参照DefaultMQPushConsumer消费流程

3 failover表现:

3.1 消息拉取异常:

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定时任务抛出异常:

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 更新offset到broker的定时任务抛出异常:

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 定时任务

参见Failover下producer的表现的定时任务MQClientInstance.this.updateTopicRouteInfoFromNameServer

它会将topic的路由更新到MQClientInstance的brokerAddrTable中,而该变量存储的是brokerName和broker地址的映射关系。

DefaultMQPushConsumer消费流程的消息拉取流程的3.1可知:

拉取消息前会根据broker_name获取broker地址,那么最终会获取到broker的slave地址。

故消息会从slave上拉取。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值