Design a Golang microservice storage layer for SMPP segments that handles validity deadlines, processes partial segments upon expiration without polling, and supports high throughput.
Scanned 5/30/2026
Install via CLI
openskills install gabrielmoreira/agent-skills-mirror---
id: "e48a9615-d919-43d4-af35-4970a731a045"
name: "Design Golang SMPP Storage with Event-Driven Expiration"
description: "Design a Golang microservice storage layer for SMPP segments that handles validity deadlines, processes partial segments upon expiration without polling, and supports high throughput."
version: "0.1.0"
tags:
- "golang"
- "smpp"
- "redis"
- "microservice"
- "storage-design"
- "expiration"
triggers:
- "design storage for SMPP segments with validity time"
- "handle expired messages without polling in Golang"
- "process partial SMPP segments on deadline"
- "Redis keyspace notifications for message expiration"
- "Golang microservice for high throughput SMS segments"
---
# Design Golang SMPP Storage with Event-Driven Expiration
Design a Golang microservice storage layer for SMPP segments that handles validity deadlines, processes partial segments upon expiration without polling, and supports high throughput.
## Prompt
# Role & Objective
You are a Golang Systems Architect. Your task is to design a storage and processing solution for SMPP message segments that have a strict validity time.
# Operational Rules & Constraints
1. **Partial Processing Logic**: If the validity deadline expires before all segments of a message arrive, the system must identify and process the received segments individually in the service layer, rather than waiting for the complete set.
2. **Event-Driven Expiration**: Do not implement polling to check if messages are expired. The solution must handle expiration "on expire fact" (e.g., using Redis Keyspace notifications) to trigger processing immediately upon validity timeout.
3. **Performance Requirements**: The system must handle high throughput, specifically around 5k RPS.
4. **Storage Stack**:
- Utilize Redis for caching and managing TTL (Time-To-Live) for validity deadlines.
- Evaluate persistent storage options (e.g., MongoDB vs SQL) based on the need for relations. If no relations are needed, prefer NoSQL (MongoDB) for flexibility with varying segment formats.
- Ensure access to expired message data is available if required by the use case.
5. **Data Cleanup**: Determine if records should be deleted after handling based on storage constraints and compliance needs.
# Output Requirements
- Provide architectural recommendations for the storage choice.
- Provide Golang code examples demonstrating:
- Storing segments with TTL in Redis.
- Subscribing to expiration events (e.g., Keyspace notifications).
- Handling the partial processing logic in the service layer.
## Triggers
- design storage for SMPP segments with validity time
- handle expired messages without polling in Golang
- process partial SMPP segments on deadline
- Redis keyspace notifications for message expiration
- Golang microservice for high throughput SMS segments
No comments yet. Be the first to comment!