HTTP-SMPP Bridge
A high-performance HTTP-SMPP bridge that provides a RESTful API for sending SMS messages through SMPP connections. This bridge supports concurrent request handling, real-time message ID responses, delivery receipts, MT and MO SMS, and authentication.
Features
HTTP REST API: Simple JSON-based API for SMS operations
SMPP Backend: Robust SMPP client with connection pooling
Concurrent Processing: Multi-threaded request handling with worker queues
Real Message IDs: Synchronous requests return actual SMPP message IDs
Multi-part SMS: Automatic handling of long messages
Batch Operations: Send multiple messages in a single request
Authentication: Secure access using SMPP credentials
Dynamic Scaling: Auto-scaling worker threads based on load
Health Monitoring: Built-in health checks and statistics
Rate Limiting: Intelligent rate limiting to protect SMPP connections
Architecture
System Components
HTTPAPIEndpoint: HTTP server and request handler
SMPPSubmitSMClient: SMPP client with connection management
Worker Queues: Concurrent request processing
Authentication: SMPP credential validation
Rate Limiting: Connection protection
Request Flow
HTTP Request → Authentication → Queue → SMPP Submit → Response
↓ ↓ ↓ ↓ ↓
JSON Parse → Credential Check → Worker → SMSC → Message ID
Concurrency Model
HTTP Workers: Process incoming requests (2-8 threads)
SMPP Workers: Handle message sending (2-16 threads)
Connection Pool: Multiple SMPP sessions per provider
Queue System: Decoupled request/response handling
📊 Performance
Throughput
Concurrent Requests: Up to 8 simultaneous HTTP requests
SMPP Sessions: Multiple sessions per provider
Message Queue: Unlimited queue size with auto-scaling
Rate Limiting: Configurable per-session limits
Scaling
Auto-scaling: Workers scale based on queue size
Load Balancing: Round-robin across SMPP sessions
Resource Management: Efficient memory and connection usage
Monitoring
Monitor performance through:
/health
endpoint for system status/sms/stats
endpoint for detailed metricsApplication logs for detailed tracing