heshiyingx

Results 4 comments of heshiyingx

看错误是消费端挂了,我怀疑你消费端调用Shutdown了,但是程序没有关闭,能否把你消费端的代码贴出来看一下

> > 看错误是消费端挂了,我怀疑你消费端调用Shutdown了,但是程序没有关闭,能否把你消费端的代码贴出来看一下 > > ``` > func ConfigConsumer() { > c, err := rocketmq.NewPushConsumer( > consumer.WithConsumerModel(consumer.Clustering), > consumer.WithNameServer([]string{global.ServerConfig.RocketMQ.Address}), > consumer.WithGroupName("config_consumer_"+global.ServerConfig.Name), > // consumer.WithGroupName("config_consumer_test1"), > consumer.WithConsumeFromWhere(consumer.ConsumeFromFirstOffset), > consumer.WithConsumerOrder(true), > consumer.WithConsumerPullTimeout(time.Second*60),...

上面回复引用太长了,看着眼晕。你可以追溯一下Consumer的创建和关闭的源代码。 如果你option没有额外设置,那么sdk是以程序的pid为key进行保存的,就是说在同一个进程中,option没额外设置,你创建100个Consumer,实际上RMQClient只有一个,自然你关闭其中一个,就关闭了所有的。解决方法你看ClientID()那个方法由哪几个参数生成,创建Consumer时传入不同的值就可以

另外有一个疑问,除了程序完成或退出时,会关闭Consumer,在程序运行过程中,什么情况下会关闭Consumer呢?