Surgewave Connectors
Surgewave Connect is the framework for streaming data between Surgewave and external
systems. Ten connectors ship in-tree (cloud storage, databases, messaging); additional
connectors are loaded as .swpkg plugins via surgewave plugins install.
Overview
Connectors enable bidirectional data flow:
- Source Connectors - Import data from external systems into Surgewave topics
- Sink Connectors - Export data from Surgewave topics to external systems
All connectors support:
- Distributed execution across multiple tasks
- Offset tracking for exactly-once semantics
- Configuration validation with sensible defaults
- Graceful error handling and retry logic
Available Connectors
Cloud Storage
| Connector | Source | Sink | Description |
|---|---|---|---|
| AWS S3 | Yes | Yes | Amazon S3 and S3-compatible storage (MinIO, LocalStack) |
| Azure Blob Storage | Yes | Yes | Azure Blob Storage with Azurite emulator support |
| Google Cloud Storage | Yes | Yes | GCS with service account and ADC authentication |
Databases
| Connector | Source | Sink | Description |
|---|---|---|---|
| PostgreSQL CDC | Yes | Yes | Logical replication with pgoutput plugin |
| MongoDB | Yes | Yes | Change streams and polling modes |
| Elasticsearch | Yes | Yes | Bulk indexing with multiple strategies |
| Generic Database | Yes | Yes | Any ADO.NET-compatible database |
File Formats
| Connector | Source | Sink | Description |
|---|---|---|---|
| CSV | Yes | Yes | RFC 4180 compliant CSV files with rolling output |
| Parquet | Yes | Yes | Apache Parquet columnar files with compression |
Messaging & Integration
| Connector | Source | Sink | Description |
|---|---|---|---|
| MQTT | Yes | Yes | MQTT 3.1.1/5.0 with MQTTnet |
| Redis | Yes | Yes | Streams, Pub/Sub, and key-value modes |
| HTTP Webhook | Yes | Yes | REST APIs and webhook endpoints |
Quick Start
1. List Available Connectors
surgewave connect plugins list
2. Create a Connector
Using CLI:
surgewave connect create my-s3-sink --config s3-sink.json
Using REST API:
curl -X POST https://localhost:9093/connectors \
-H "Content-Type: application/json" \
-d '{
"name": "my-s3-sink",
"config": {
"connector.class": "S3SinkConnector",
"s3.bucket.name": "my-bucket",
"s3.region": "us-east-1",
"topics": "events"
}
}'
3. Monitor Status
surgewave connect status my-s3-sink
Common Configuration
All connectors support these common options:
| Option | Type | Default | Description |
|---|---|---|---|
connector.class |
string | Required | Connector class name |
tasks.max |
int | 1 | Maximum parallel tasks |
key.converter |
string | JSON | Key serialization format |
value.converter |
string | JSON | Value serialization format |
errors.tolerance |
string | none | Error handling: none, all |
errors.log.enable |
bool | false | Log errors to DLQ topic |
Connector Management
CLI Commands
# Lifecycle
surgewave connect create <name> --config <file>
surgewave connect delete <name>
surgewave connect pause <name>
surgewave connect resume <name>
surgewave connect restart <name>
# Status
surgewave connect list
surgewave connect status <name>
surgewave connect describe <name>
# Tasks
surgewave connect tasks list <name>
surgewave connect tasks restart <name> <task-id>
REST API
| Endpoint | Method | Description |
|---|---|---|
/connectors |
GET | List all connectors |
/connectors |
POST | Create connector |
/connectors/{name} |
GET | Get connector details |
/connectors/{name} |
DELETE | Delete connector |
/connectors/{name}/config |
GET/PUT | Get or update config |
/connectors/{name}/status |
GET | Get status |
/connectors/{name}/pause |
PUT | Pause connector |
/connectors/{name}/resume |
PUT | Resume connector |
/connectors/{name}/restart |
POST | Restart connector |
/connector-plugins |
GET | List available plugins |
Building Custom Connectors
Surgewave's connector framework is fully extensible. You can build custom connectors for any data source or sink.
See the Custom Connector Development Guide for:
- Connector architecture and lifecycle
- Implementing source and sink connectors
- Configuration validation
- Offset management
- Testing and deployment
Next Steps
- AWS S3 Connector - Cloud storage integration
- PostgreSQL CDC - Database change data capture
- MQTT Connector - IoT messaging
- Custom Connectors - Build your own