Source Acquisition Capability¶
The Source Acquisition capability abstracts data ingestion across all source types and acquisition modes.
Contract¶
public interface SourceAcquisitionContract extends BaseProviderContract {
ConnectionResult connect();
SchemaDescriptor discoverSchema();
DataStream acquire(String mode, Map<String, Object> parameters);
CheckpointState checkpoint();
DataStream resume(CheckpointState checkpoint);
void disconnect();
}
Acquisition Modes¶
| Mode | Description | Use Case |
|---|---|---|
snapshot |
Full extract of all data | Initial loads, small tables |
incremental |
Delta based on watermark/change tracking | Regular updates |
time_window |
Bounded time range | Backfills, reprocessing |
streaming |
Continuous consumption | Real-time pipelines |
event_notification |
Trigger-based acquisition | Event-driven architectures |
change_feed |
CDC log consumption | Database replication |
Pipeline Configuration¶
- name: acquire-data
type: source
capability: source-acquisition
timeout: PT10M
config:
mode: incremental
watermark: updated_at
batchSize: 10000
Checkpointing¶
The capability supports resumable acquisition:
- checkpoint() — Persists current position (offsets, watermarks, cursors)
- resume(checkpoint) — Continues from last saved position
For replayable sources (S3, databases, Kafka with retention): resume guarantees no data loss or duplication.
For non-replayable sources (transient streams, push APIs): the Intake service buffers data into a replayable intermediate store.
Connection Timeout¶
Default: 30 seconds. Maximum: 300 seconds.
If connection fails within the timeout, the Intake service reports a connection failure with source identifier, provider type, and failure reason.
Example Providers¶
| Provider | Sources |
|---|---|
| JDBC Provider | PostgreSQL, MySQL, Oracle, SQL Server |
| Kafka Provider | Kafka topics (streaming, change_feed) |
| S3 Provider | S3 objects (snapshot, incremental) |
| REST API Provider | HTTP endpoints (event_notification) |
| SFTP Provider | File-based sources (snapshot, time_window) |