Features
Core Capabilities
Enterprise Integration Framework
GoCamel is a lightweight, Go-native integration framework inspired by Apache Camel. It provides:
- Modular Architecture — Component-based design
- Type Safety — Full Go type safety
- Concurrency — Built on Go goroutines
- Zero External Dependencies — Optional database drivers only
Route & Endpoint Model
Message Model
flowchart TB
subgraph Exchange["Exchange"]
direction TB
subgraph Properties["Properties"]
P["correlationId: 'abc-123'<br/>routeId: 'route-1'"]
end
subgraph In["In (Message)"]
I["<b>Headers:</b> map[string]any<br/>Content-Type: 'application/json'<br/><br/><b>Body:</b> any<br/>{'name': 'John', 'age': 30}"]
end
subgraph Out["Out (Message)"]
O["<b>Headers:</b> map[string]any<br/>X-Processed: 'true'<br/><br/><b>Body:</b> any<br/>{'name': 'John', 'age': 31}"]
end
endSimple Language
Dynamic expression language for routing and transformations:
Component Ecosystem
Core (Built-in)
- Direct — In-memory routing
- Timer — Scheduled execution
Security
- Path Validation — Protection against directory traversal attacks
- SQL Injection Prevention — Parameter binding; the statement is trusted configuration and is never interpolated with message data
- Input Sanitization — Null byte and control character removal
- Safe Path Operations — Bounds-checking for file operations, with symlink resolution so a link inside the base directory cannot escape it
- No credential reflection — the HTTP consumer never echoes inbound request headers back in its response
- Bounded body reads — HTTP request and response bodies are size-limited (32 MiB by default) to prevent memory exhaustion
- Panic containment — a panicking processor fails its exchange instead of the process
File Transfer
- File — Local filesystem
- FTP/FTPS — File Transfer Protocol
- SFTP — SSH File Transfer
- SMB — Windows shares
Network
- HTTP — HTTP server/client
- Net — Raw TCP/UDP sockets
- gRPC — High-performance RPC client/server
Messaging
- Kafka — Apache Kafka distributed event streaming
- NATS — High-performance event messaging
- Redis — Commands and Pub/Sub
- Telegram — Bot API
- Mail — SMTP/IMAP/POP3
- Go Channel — In-memory buffered channels
AI
- OpenAI — GPT models
Database
- SQL — Query execution
- SQL-Stored — Stored procedures
Scheduling
- Cron — Cron expressions
Transformation
- XSLT — XML transformation
- XSD — Schema validation
- Template — Go templates
- Exec — Command execution
Enterprise Integration Patterns
| Pattern | Description | Status |
|---|---|---|
| Choice | Content-based router | ✅ |
| Split | Message splitter | ✅ |
| Aggregate | Message aggregator | ✅ |
| Multicast | Multiple destinations | ✅ |
| Filter | Conditional filtering | ✅ |
| Transform | Message transformation | ✅ |
| Enrich | Content enricher | ✅ |
| PollEnrich | On-demand enricher | ✅ |
| Validate | Message validator | ✅ |
| ToD | Dynamic endpoint | ✅ |
| Stop | Stop routing | ✅ |
| Pipeline | Sequential branches | ✅ |
| SetHeader | Header manipulation | ✅ |
| SetProperty | Property manipulation | ✅ |
REST Management API
Monitor and control routes via HTTP:
Endpoints:
GET /routes— List routesGET /routes/{id}— Route detailsPOST /routes/{id}/start— Start routePOST /routes/{id}/stop— Stop routeGET /health— Health check
Configuration
Multiple credential sources:
- Direct in URI —
ftp://user:pass@host - Query parameters —
?username=user&password=pass - Environment variables —
FTP_PASSWORD(recommended)
Testing Support
Performance
- Minimal allocations — Object pooling
- Goroutine efficiency — Lightweight threads
- No reflection — Type-safe operations
- Lazy initialization — On-demand loading
Extensibility
Best Practices
- Use environment variables for credentials
- Define route IDs for management
- Implement error handling in processors
- Use appropriate storage for aggregations
- Configure timeouts for external systems
- Enable REST API for production monitoring