[Question] Why eventmesh re-write RocketMQ's consume serivce and use a global thread pool to consume all messages?
- 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'm new to Eventmesh, after reading some source code of Eventmesh, I have some questions.
Eventmesh re-write RocketMQ's `ConsumeMessageConcurrentlyService` to implement async offset commitment, and using a global thread pool `EventMeshHTTPServer.pushMsgExecutor` to process all HTTP push requests. Besides, Eventmesh implement it's own retry logic using Java's `DelayQueue`.
1. Why not use RocketMQ consumer's consume thread pool to process HTTP push requests? Global thread pool may be busy when some of the HTTP targets are unreachable, and will stuck all HTTP push requests
2. Is it profitable to choose async offset commit from RocketMQ's original offset commit mechanism?
3. Why not use RocketMQ's consumer retry mechanism?
Contributor guide
Research direction
Start by reading the EventMesh implementation of ConsumeMessageConcurrentlyService, EventMeshHTTPServer.pushMsgExecutor, and the DelayQueue-based retry logic mentioned in the issue. Compare these choices with the corresponding RocketMQ consumer mechanisms and document the rationale, trade-offs, and answers to the three questions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, distributed-systems
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100