报错
See http://rocketmq.apache.org/docs/faq/ for further details. org.apache.rocketmq.client.exception.MQClientException: The PushConsumer service state not OK, maybe started once, RUNNING See http://rocketmq.apache.org/docs/faq/ for further details. at org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl.start(DefaultMQPushConsumerImpl.java:641) ~[rocketmq-client-4.5.2.jar:4.5.2] at org.apache.rocketmq.client.consumer.DefaultMQPushConsumer.start(DefaultMQPushConsumer.java:693) ~[rocketmq-client-4.5.2.jar:4.5.2] See http://rocketmq.apache.org/docs/faq/ for further details. org.apache.rocketmq.client.exception.MQClientException: The PushConsumer service state not OK, maybe started once, RUNNING See http://rocketmq.apache.org/docs/faq/ for further details. at org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl.start(DefaultMQPushConsumerImpl.java:641) ~[rocketmq-client-4.5.2.jar:4.5.2] at org.apache.rocketmq.client.consumer.DefaultMQPushConsumer.start(DefaultMQPushConsumer.java:693) ~[rocketmq-client-4.5.2.jar:4.5.2]
使用场景
RocketMqConfig rocketMqConfig = new RocketMqConfig(); try { DefaultMQPushConsumer consumer = rocketMqConfig.getConsumer(); consumer.registerMessageListener(new MessageListenerOrderly() { @Override public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) { context.setAutoCommit(true); try { System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs); logger.info("{} Receive New Messages: {}", Thread.currentThread().getName(), msgs); for (MessageExt msg : msgs) { } } catch (Exception e) { logger.error(e.getMessage(), e); } return ConsumeOrderlyStatus.SUCCESS; } }); consumer.start();
这是我们在 spring 中的使用方式,由于是启动一个线程在执行。所以错误原因是做了重复。(PushConsumer service state not OK, maybe started once, RUNNING)
解决
最后,方法添加注解@PostConstruct
,初始化后启动,