java.lang.ClassCastException: org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext cannot be cast to org.apache.eventmesh.storage.rocketmq.patch.EventMeshConsumeConcurrentlyContext
- Dominant language
- Java
- Stars
- 1.8k
- Forks
- 658
- Avg merge
- 11h 29m
- Merged PRs (30d)
- 52
Description
### Search before asking
- [X] I had searched in the [issues](https://github.com/apache/eventmesh/issues?q=is%3Aissue) and found no similar issues.
### Question
I deployed event-mesh and rocketmq in binary mode, and then referred to the http example in eventmesh-sdks-go in the official document, ran a producer and consumer, and then a problem occurred. Every time I restarted the producer, the following type conversion exception was prompted. Another problem is that I saw in rocketmq that the message has been consumed, but the callbackurl has not been triggered.
```
2024-12-17 07:09:24,335 INFO [NettyClientPublicExecutor_3] message(SendAsyncMessageProcessor.java:265) - message|eventMesh2mq|REQ|ASYNC|send2MQCost=4ms|topic=TEST-TOPIC-HTTP-ASYNC|bizSeqNo=093898764964079192644913685160|uniqueId=799963934683309698839159604968
2024-12-17 07:09:24,336 DEBUG [EventMesh-http-asyncContext-4] http(LogUtils.java:90) - httpCommand={RES,POST/HTTP,requestCode=104,opaque=167,cost=19,header=SendMessageResponseHeader(code=104, eventMeshCluster=COMMON, eventMeshIp=[fe80:0:0:0:3ca8:a8ff:fee0:6919%veth0f6a1c3], eventMeshEnv=PRD, eventMeshIdc=DEFAULT),body=sendMessageResponseBody={retCode=0,retMsg=successSendResult[topic=TEST-TOPIC-HTTP-ASYNC, messageId=7F000001F461330BEDB453EEE1EC0002],resTime=1734419364335}}
2024-12-17 07:09:24,336 DEBUG [NettyClientPublicExecutor_3] TraceUtils(TraceUtils.java:84) - finishSpan with event:CloudEvent{id='bc021b52-f9f8-46de-8b4f-31997004e4cc', source=example/uri, type='cloudevents', datacontenttype='application/cloudevents+json', subject='TEST-TOPIC-HTTP-ASYNC', data=BytesCloudEventData{value=[123, 34, 109, 113, 34, 58, 34, 114, 111, 99, 107, 101, 116, 109, 113, 34, 125]}, extensions={protocolversion=1.0, reqeventmesh2mqtimestamp=1734419364331, code=104, reqsendeventmeship=[fe80:0:0:0:3ca8:a8ff:fee0:6919%veth0f6a1c3], ip=172.20.154.162:39854, protocoldesc=http, idc=FT, language=GO, pid=13611, env=P, sys=1234, ttl=4000, version=1.0, producergroup=EventMeshTest-producerGroup, passwd=test, bizseqno=093898764964079192644913685160, protocoltype=cloudevents, msgtype=persistent, uniqueid=799963934683309698839159604968, username=test, reqc2eventmeshtimestamp=1734419364316}}
2024-12-17 07:09:24,340 INFO [ConsumeMessageThread_EventMeshTest-consumerGroup_3] EventMeshMessageListenerConcurrently(EventMeshMessageListenerConcurrently.java:63) - handleMessage fail
java.lang.ClassCastException: org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext cannot be cast to org.apache.eventmesh.storage.rocketmq.patch.EventMeshConsumeConcurrentlyContext
at org.apache.eventmesh.storage.rocketmq.patch.EventMeshMessageListenerConcurrently.consumeMessage(EventMeshMessageListenerConcurrently.java:44) [eventmesh-storage-rocketmq-1.10.0-release.jar:1.10.0-release]
at org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService$ConsumeRequest.run(ConsumeMessageConcurrentlyService.java:402) [rocketmq-client-4.9.5.jar:4.9.5]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_432]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_432]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_432]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_432]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_432]
2024-12-17 07:09:26,782 DEBUG [pool-7-thread-1] ConsumerManager(LogUtils.java:84) - grpc client info check
2024-12-17 07:09:26,782 DEBUG [pool-7-thread-1] ConsumerManager(LogUtils.java:90) - total number of ConsumerGroupClients: 0
2024-12-17 07:09:27,233 INFO [MQClientFactoryScheduledThread] RocketmqClient(Slf4jLoggerFactory.java:100) - [persistAll] Group: EventMeshTest-consumerGroup ClientId: 172.20.154.162@EventMeshTest-consumerGroup(COMMON)-3.0.0-62561 updateConsumeOffsetToBroker MessageQueue [topic=TEST-TOPIC-HTTP-ASYNC, brokerName=node2, queueId=10] 1
2024-12-17 07:09:27,233 INFO [MQClientFactoryScheduledThread] RocketmqClient(Slf4jLoggerFactory.java:100) - [persistAll] Group: EventMeshTest-consumerGroup ClientId: 172.20.154.162@EventMeshTest-consumerGroup(COMMON)-3.0.0-62561 updateConsumeOffsetToBroker MessageQueue [topic=TEST-TOPIC-HTTP-ASYNC, brokerName=node2, queueId=8] 0
2024-12-17 07:09:27,233 INFO [MQClientFactoryScheduledThread] RocketmqClient(Slf4jLoggerFactory.java:100) - [persistAll] Group: EventMeshTest-consumerGroup ClientId: 172.20.154.162@EventMeshTest-consumerGroup(COMMON)-3.0.0-62561 updateConsumeOffsetToBroker MessageQueue [topic=TEST-TOPIC-HTTP-ASYNC, brokerName=node2, queueId=14] 0
2024-12-17 07:09:27,234 INFO [MQClientFactoryScheduledThread] RocketmqClient(Slf4jLoggerFactory.java:100) - [persistAll] Group: EventMeshTest-consumerGroup ClientId: 172.20.154.162@EventMeshTest-consumerGroup(COMMON)-3.0.0-62561 updateConsumeOffsetToBroker MessageQueue [topic=TEST-TOPIC-HTTP-ASYNC, brokerName=node2, queueId=12] 0
```



Contributor guide
Research direction
Start with EventMeshMessageListenerConcurrently.java, especially consumeMessage at lines 44 and 63, and compare the expected context with RocketMQ's ConsumeConcurrentlyService stack frame. Reproduce the binary-mode HTTP example using the eventmesh-sdks-go producer and consumer, then verify whether the callback URL is triggered and whether the context conversion still fails. Done means the reported ClassCastException and missing callback behavior are resolved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100