Apache Software Foundation / SeaTunnel
Merged upstreamFeatureMerged Sep 4, 2026

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.