qqeasonchen opened a new pull request, #5394: URL: https://github.com/apache/eventmesh/pull/5394
### What changes? Completes the **16 incomplete connector implementations** under `eventmesh-connector-plugin/` on the new architecture. All follow the new-architecture `SourceConnector`/`SinkConnector` contract (`init`/`resume`/`poll`/`commit` + `init`/`put`/`commit`); external-system logic is ported from the master-branch (openconnect) implementations where available. | # | Plugin | Side | Implementation | |---|--------|------|----------------| | 1 | canal | source | canal TCP client (`getWithoutAck` → CloudEvent; batch ack on `commit`) | | 2 | canal | sink | all-or-nothing JDBC batch (rollback + throw on failure → redelivery) | | 3 | chatgpt | source | HTTP prompt endpoint (JDK HttpServer) + OpenAI REST completion, no SDK | | 4 | dingtalk | source | outgoing-callback webhook receiver w/ HMAC-SHA256 signature verification | | 5 | lark | source | event-subscription callback receiver w/ url_verification challenge | | 6 | slack | source | Events API receiver w/ v0 HMAC signature verification + challenge | | 7 | wechat | source | Official Account callback (GET SHA-1 echostr verification + POST XML) | | 8 | wecom | source | WeCom callback receiver (URL challenge + JSON events) | | 9 | mcp | source | JSON-RPC 2.0 notification receiver | | 10 | mcp | sink | JSON-RPC 2.0 forward over HTTP (2xx = ack, throw otherwise) | | 11 | openfunction | source | function output push receiver | | 12 | openfunction | sink | function HTTP trigger invoke (Knative-serving style, Ce-* headers) | | 13 | pravega | source | `EventStreamReader` via reader-group (native offsets; reconnect on rebalance) | | 14 | pravega | sink | `EventStreamWriter` (auto scope/stream creation; write + join) | | 15 | prometheus | sink | Pushgateway text-exposition push (batched single request) | | 16 | spring | sink | injectable `EventForwarder` bridge (fail-fast until the Spring context wires it) | ### Design notes - **Push-style sources** (IM webhooks, chatgpt, openfunction, mcp): a small JDK `HttpServer` receives platform callbacks into a buffer; `poll()` drains it — matching the ConnectorRuntime §8 poll/commit loop without threads inside the connector. - **At-least-once semantics preserved everywhere**: sinks throw on failure (no ACK → EventMesh redelivers); canal source acks the canal batch only after EventMesh accepted the publish. - **No heavyweight SDKs**: OpenAI/IM integrations use plain `HttpURLConnection`; only canal (`canal.client/protocol 1.1.7`) and pravega (`pravega-client 0.11.0`) get real clients (both versions match master). JSON plugins add `jackson-databind 2.18.0` (already the repo-managed version). ### Verification - [x] `compileJava` green on all 12 touched modules (JDK 21) - [x] `checkstyleMain` 0 violations on all 12 modules (canonical ASF header, ImportOrder groups, VariableDeclarationUsageDistance) - [x] No existing tests touched (modified modules have only `src/test/resources` configs, no test classes) - [x] All blobs LF-only (no CRLF autocrlf drift) Follow-up (out of scope): unit tests per new implementation, `resume()` offset wiring for push-style sources. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
