Skip to content

[Architecture Review][P0] Partition eventmesh-common into internal packages #5298

Description

@qqeasonchen

Execution meta — see plan: #5296

Problem

eventmesh-common is an oversized "kitchen-sink" module. It exposes CloudEvents, Netty, gRPC, HTTP client, Jackson, Fastjson, Disruptor, and more. SPI, Storage API, and Protocol API all depend on it.

Risks

  • Plugin developers are forced to pull in many unrelated dependencies.
  • SDK and Runtime are prone to dependency conflicts.
  • Kernel, protocol, network, serialization, and utilities cannot evolve independently.

Proposed direction

Keep eventmesh-common as a single module for now, but partition it into clear internal packages — no new modules, since the module count is already too high:

org.apache.eventmesh.common.model    EventMeshFrame, topic, offset, error model, base value objects
org.apache.eventmesh.common.wire     Frame codec / WireCodec
org.apache.eventmesh.common.config   configuration model + validation
org.apache.eventmesh.common.util     utility classes with no infrastructure dependency

A physical module split is a follow-up only — do it only if a hard dependency cut is needed so plugin authors stop pulling Netty / gRPC transitively.

Acceptance criteria

  • model and wire packages are free of Netty / gRPC / HTTP / Jackson / Fastjson / Disruptor imports.
  • SPI, Storage API, and Protocol API reference only model / wire packages (enforced by ArchUnit).
  • Migration is staged (no single giant-bang PR); deprecation notes added to eventmesh-common.

Part of the Architecture Review.

Metadata

Metadata

Assignees

No one assigned

    Labels

    improvementImprove the mechanism or performance

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions