Support multi-row CDC deserialization from Amazon SQS
Enabled collector-based Canal and Debezium JSON processing in SeaTunnel's Amazon SQS source, including ordered multi-row updates and atomic parse-error handling.
apache/seatunnel · #12084
Connector functionality fix
SeaTunnel's documented Canal and Debezium JSON formats now work with Amazon SQS and preserve each CDC message's multi-row semantics.
Problem
The connector advertised `canal_json` and `debezium_json` but always invoked their unsupported single-row API, so the first CDC message failed. A single CDC envelope can also emit multiple rows, making partial output or early deletion unsafe.
Approach
Uses the collector-based deserialization API for CDC formats, buffers all rows from one SQS message, emits them in order, and deletes the source message only after every row is collected. Parse-error skipping now discards the entire message atomically, while JSON and text paths retain their existing behavior.
Impact and scope
- Makes two documented Amazon SQS CDC formats operational instead of failing on every message.
- Preserves UPDATE_BEFORE and UPDATE_AFTER ordering without exposing partially decoded CDC events downstream.
- Protects at-least-once processing by retaining the SQS message when deserialization or downstream collection fails.
Validation
- Added deterministic factory-to-reader regressions for Canal and Debezium updates, zero-row events, partial parse failures, collector failures, and deletion ordering.
- All 17 Amazon SQS module tests passed on Java 8 and Java 11; module verification, packaging, Spotless, and the final Apache Build passed.
- The authored commit and GitHub-verified merge credit Goutam Adwant; upstream approval called the work fantastic and thanked him for the effort.