This issure is migrated from here apache/rocketmq-externals#173
BUG REPORT
- Please describe the issue you observed:
- What did you do (The steps to reproduce)?
I want to define an abstract class that inherits RocketMQListener, which is used to handle message acceptance and message forwarding. When inheriting this abstract class as a consumer, the message will be reported incorrectly.
- What did you expect to see?
Classes that implement RocketMQListener can be inherited and can accept messages as consumers.
- What did you see instead?
- Please tell us about your environment:
The consuers can‘t receive message and throw a exception
2018-12-05 01:26:23.401 INFO 2653 --- [MessageThread_1] r.s.s.s.DefaultRocketMQListenerContainer : convert failed. str:broadcast msg, msgType:class java.lang.Object
2018-12-05 01:26:23.409 WARN 2653 --- [MessageThread_1] r.s.s.s.DefaultRocketMQListenerContainer : consume message failed. messageExt:MessageExt [queueId=2, storeSize=282, queueOffset=4, sysFlag=0, bornTimestamp=1543944383229, bornHost=/192.168.0.13:38042, storeTimestamp=1543944383230, storeHost=/172.17.0.1:10911, msgId=AC11000100002A9F000000000002C7C0, commitLogOffset=182208, bodyCRC=278141710, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='broadcastTopic-topic', flag=0, properties={USERS_id=3e3fdc75-55a7-9dee-e6c3-a21e8de05d1f, MIN_OFFSET=0, USERS_timestamp=1543944383227, MAX_OFFSET=5, USERS_contentType=text/plain, CONSUME_START_TIME=1543944383399, UNIQ_KEY=AC1100010B0518B4AAC214E886FD000F, WAIT=false}, body=[98, 114, 111, 97, 100, 99, 97, 115, 116, 32, 109, 115, 103], transactionId='null'}]
java.lang.RuntimeException: cannot convert message to class java.lang.Object
at org.apache.rocketmq.spring.starter.supports.DefaultRocketMQListenerContainer.doConvertMessage(DefaultRocketMQListenerContainer.java:222) ~[classes/:na]
at org.apache.rocketmq.spring.starter.supports.DefaultRocketMQListenerContainer.access$100(DefaultRocketMQListenerContainer.java:50) ~[classes/:na]
at org.apache.rocketmq.spring.starter.supports.DefaultRocketMQListenerContainer$DefaultMessageListenerConcurrently.consumeMessage(DefaultRocketMQListenerContainer.java:154) ~[classes/:na]
at org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService$ConsumeRequest.run(ConsumeMessageConcurrentlyService.java:417) [rocketmq-client-4.3.0.jar:4.3.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_181]
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_181]
at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
Caused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'broadcast': was expecting ('true', 'false' or 'null')
at [Source: broadcast msg; line: 1, column: 10]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702) ~[jackson-core-2.8.10.jar:2.8.10]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558) ~[jackson-core-2.8.10.jar:2.8.10]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:2839) ~[jackson-core-2.8.10.jar:2.8.10]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1903) ~[jackson-core-2.8.10.jar:2.8.10]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:749) ~[jackson-core-2.8.10.jar:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3850) ~[jackson-databind-2.8.10.jar:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3799) ~[jackson-databind-2.8.10.jar:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2858) ~[jackson-databind-2.8.10.jar:2.8.10]
at org.apache.rocketmq.spring.starter.supports.DefaultRocketMQListenerContainer.doConvertMessage(DefaultRocketMQListenerContainer.java:219) ~[classes/:na]
... 9 common frames omitted
- Other information (e.g. detailed explanation, logs, related issues, suggestions how to fix, etc):