apache / apache/eventmesh

java.lang.ClassCastException: org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext cannot be cast to org.apache.eventmesh.storage.rocketmq.patch.EventMeshConsumeConcurrentlyContext

Open
#5,148 6 comments 0 reactions 0 assignees View on GitHub
question Stale
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
```

![image](https://github.com/user-attachments/assets/a93e0880-7025-4745-98c0-e23356293041)
![image](https://github.com/user-attachments/assets/75c05e0b-a1e9-4aa4-a205-60d281d64815)
![image](https://github.com/user-attachments/assets/b2cfe605-8944-4590-aa00-bece662d6550)

Contributor guide

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.