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
Simple 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
Messaging
- Telegram — Bot API
- Mail — SMTP/IMAP/POP3
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 | ✅ |
| 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