qunarcorp / qmq

QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

运行qmq-demo控制台报错【meta server return empty broker】

yuantuji opened this issue · comments

问题描述
运行qmq-demo控制台报错"meta server return empty broker, will retry in a few seconds. subject=order.changed, client=PRODUCER"

环境配置
已经启动了meta_server和broker,也注册了broker master节点到metaserver

复现步骤
通过代码调试,发现public void sendRequest(final MetaInfoRequest request)里的request是没有cluster信息的。

commented

看下 metaserver 的日志和数据库,看看里面有没有 broker 信息。

看下 metaserver 的日志和数据库,看看里面有没有 broker 信息。

broker表里有记录,broker_group表是空的。
日志的话,我贴一下metaserver.out的内容(只截取部分,内容有点多)
[2021-08-09 15:47:57 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] broker register request received. request: BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}
[2021-08-09 15:47:57 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] Broker heartbeat response, request:BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}
[2021-08-09 15:48:02 INFO qunar.tc.qmq.meta.cache.CachedMetaInfoManager] refresh meta info
[2021-08-09 15:48:07 INFO qunar.tc.qmq.meta.cache.CachedMetaInfoManager] refresh meta info
[2021-08-09 15:48:07 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] broker register request received. request: BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}
[2021-08-09 15:48:07 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] Broker heartbeat response, request:BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}
[2021-08-09 15:48:12 INFO qunar.tc.qmq.meta.cache.CachedMetaInfoManager] refresh meta info
[2021-08-09 15:48:13 INFO qunar.tc.qmq.netty.ConnectionHandler] [name: meta] client /10.37.129.2:63863 connected
[2021-08-09 15:48:13 INFO qunar.tc.qmq.concurrent.ActorSystem] create actorSystem: client_register_order.changed
[2021-08-09 15:48:13 INFO qunar.tc.qmq.concurrent.ActorSystem] create actorSystem: client_register_%RETRY%order.changed%ordercenter
[2021-08-09 15:48:13 ERROR qunar.tc.qmq.meta.route.impl.DefaultSubjectRouter] find subject route error
java.lang.NullPointerException: null
at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:258)
at qunar.tc.qmq.meta.cache.CachedMetaInfoManager.getAllDefaultTagBrokerGroupNames(CachedMetaInfoManager.java:118)
at qunar.tc.qmq.meta.route.impl.DefaultSubjectRouter.findAvailableBrokerGroupNames(DefaultSubjectRouter.java:168)
at qunar.tc.qmq.meta.route.impl.DefaultSubjectRouter.assignNewBrokers(DefaultSubjectRouter.java:100)
at qunar.tc.qmq.meta.route.impl.DefaultSubjectRouter.doRoute(DefaultSubjectRouter.java:79)
at qunar.tc.qmq.meta.route.impl.DefaultSubjectRouter.route(DefaultSubjectRouter.java:64)
at qunar.tc.qmq.meta.route.impl.DelayRouter.route(DelayRouter.java:48)
at qunar.tc.qmq.meta.processor.ClientRegisterWorker.handleClientRegister(ClientRegisterWorker.java:109)
at qunar.tc.qmq.meta.processor.ClientRegisterWorker.process(ClientRegisterWorker.java:80)
at qunar.tc.qmq.meta.processor.ClientRegisterWorker.process(ClientRegisterWorker.java:55)
at qunar.tc.qmq.concurrent.ActorSystem$Actor.processMessages(ActorSystem.java:173)
at qunar.tc.qmq.concurrent.ActorSystem$Actor.run(ActorSystem.java:155)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at qunar.tc.qmq.concurrent.NamedThreadFactory$1.run(NamedThreadFactory.java:52)
at java.lang.Thread.run(Thread.java:748)

commented
[2021-08-09 15:47:57 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] broker register request received. request: BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}
[2021-08-09 15:47:57 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] Broker heartbeat response, request:BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}

broker 的日志也发一下,看这个日志像是 broker 没有转变成上线状态。

[2021-08-09 15:47:57 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] broker register request received. request: BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}
[2021-08-09 15:47:57 INFO qunar.tc.qmq.meta.processor.BrokerRegisterProcessor] Broker heartbeat response, request:BrokerRegisterRequest{groupName='mytestbroker', brokerRole=0, brokerState=4, requestType=1, brokerAddress='10.37.129.2:20881'}

broker 的日志也发一下,看这个日志像是 broker 没有转变成上线状态。

[2021-08-09 15:45:57 INFO qunar.tc.qmq.startup.ServerWrapper] qmq server init started
[2021-08-09 15:45:57 INFO qunar.tc.qmq.configuration.BrokerConfig] Broker meta updated. meta: BrokerAcquireMetaResponse{name='mytestbroker', role=MASTER, master=''}
Exception in thread "main" java.lang.RuntimeException: failed create directory /data/checkpoint
at qunar.tc.qmq.store.SnapshotStore.ensureStorePath(SnapshotStore.java:67)
at qunar.tc.qmq.store.SnapshotStore.(SnapshotStore.java:55)
at qunar.tc.qmq.store.CheckpointManager.(CheckpointManager.java:64)
at qunar.tc.qmq.store.DefaultStorage.(DefaultStorage.java:82)
at qunar.tc.qmq.startup.ServerWrapper.createStorage(ServerWrapper.java:130)
at qunar.tc.qmq.startup.ServerWrapper.start(ServerWrapper.java:89)
at qunar.tc.qmq.container.Bootstrap.main(Bootstrap.java:32)
就这一点点

commented

看着是 broker 启动失败了,没有成功创建 checkpoint 目录。如果你没有 /data 目录,那需要修改下 broker 配置文件中的 store.root,指定一个存在且有可写权限的目录。

看着是 broker 启动失败了,没有成功创建 checkpoint 目录。如果你没有 /data 目录,那需要修改下 broker 配置文件中的 store.root,指定一个存在且有可写权限的目录。

[2021-08-09 17:40:06 INFO qunar.tc.qmq.netty.NettyServer] listen on port 20882
[2021-08-09 17:40:06 INFO qunar.tc.qmq.netty.NettyServer] listen on port 20881
[2021-08-09 17:40:06 INFO qunar.tc.qmq.consumer.SubscriberStatusChecker] broker online status changed from false to true
[2021-08-09 17:40:06 INFO qunar.tc.qmq.startup.ServerWrapper] qmq server init done

可以了,谢谢!

看着是 broker 启动失败了,没有成功创建 checkpoint 目录。如果你没有 /data 目录,那需要修改下 broker 配置文件中的 store.root,指定一个存在且有可写权限的目录。

[2021-08-09 17:40:06 INFO qunar.tc.qmq.netty.NettyServer] listen on port 20882
[2021-08-09 17:40:06 INFO qunar.tc.qmq.netty.NettyServer] listen on port 20881
[2021-08-09 17:40:06 INFO qunar.tc.qmq.consumer.SubscriberStatusChecker] broker online status changed from false to true
[2021-08-09 17:40:06 INFO qunar.tc.qmq.startup.ServerWrapper] qmq server init done

可以了,谢谢!