smpp-kafka-producer Overview
smpp-kafka-producer is a production-ready SMPP-to-Kafka bridge that receives SMS messages via SMPP protocol and publishes them to Apache Kafka topics.
Features
-
Dual Protocol Support - SMPP 3.x/5.x and HTTP/2 REST API
-
5G Ready - HTTP/2 interface compatible with 3GPP TS 29.540 SMSF
-
High Performance - Async processing with virtual threads
-
Observable - Prometheus metrics, health endpoints
-
Cloud Native - Docker, Kubernetes manifests, Helm-ready
-
Benchmarkable - JMH microbenchmarks and load testing tools
Architecture
┌─────────────────┐
│ SMPP Clients │
└────────┬────────┘
│ SMPP 3.x/5.x
▼
┌─────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ HTTP/2 API │────▶│ SMPP Gateway │────▶│ Apache Kafka │
│ (5G SMSF) │ │ (smpp-core) │ │ │
└─────────────┘ └────────┬────────┘ └─────────────────┘
│
┌────────┴────────┐
│ Metrics │
│ (Prometheus) │
└─────────────────┘
Quick Start
Prerequisites
-
Java 21+ (uses virtual threads)
-
Maven 3.8+
-
Apache Kafka (or use provided docker-compose)
Build
git clone https://github.com/bassrehab/smpp-kafka-producer.git
cd smpp-kafka-producer
mvn clean package
Message Flow
-
SMPP Client connects and binds to the gateway
-
SubmitSm PDU received with SMS content
-
Message processed and converted to JSON
-
Published to Kafka topic
-
SubmitSmResp returned with message ID
-
Delivery receipt sent when message delivered
Ports
| Port | Protocol | Description |
|---|---|---|
2775 |
SMPP |
SMPP server port |
8080 |
HTTP/2 |
REST API |
9090 |
HTTP |
Prometheus metrics |
Next Steps
-
Configuration - Kafka, SMPP, and HTTP settings
-
Deployment - Docker and Kubernetes
-
HTTP API - REST API reference