So vermeiden Sie doppelte Push-Benachrichtigungen: Tiefenanalyse der CID-Funktionalität
In Push-Benachrichtigungssystemen stellen doppelte Pushs ein häufiges Problem dar – insbesondere bei instabilen Netzwerken oder erneuten Systemversuchen. In diesem Artikel erfahren Sie, wie Sie mit der Client-ID-Funktionalität (CID) doppelte Nachrichten effektiv verhindern und Ihr System zuverlässiger gestalten.
CID-Funktionalität bei Sofort-Push-Benachrichtigungen
Kernfunktionen
Die CID ist ein optionaler Parameter zur eindeutigen Identifizierung einer bestimmten Push-Anfrage. Wird eine Anfrage mit derselben CID wiederholt:
- Gibt das System die
msg_iddes ersten erfolgreichen Pushs zurück - Verhindert, dass Nachrichten mehrfach an Nutzer:innen gesendet werden
- Bietet eine Idempotenz-Garantie (mehrfache Ausführung hat stets dieselbe Wirkung)
Schlüsseleigenschaften
| Merkmal | Beschreibung |
|---|---|
| Gültigkeitsdauer | 1 Stunde |
| Formatvorgaben | Alphanumerische Zeichen, Unterstriche, Bindestriche; Länge ≤ 64 Zeichen |
| Eindeutigkeit | Muss unter demselben Appkey eindeutig sein |
| Unterstützte Szenarien | Einzel-Pushs und Batch-Pushs |
Anwendungsfälle
- Netzwerk-Wiederholungen: Wiederholen Sie Pushs mit derselben CID bei instabilen Netzwerken.
- Idempotenz-Sicherung: Stellen Sie sicher, dass dieselbe Nachricht nicht mehrfach gesendet wird.
- Anfrage-Tracking: Verfolgen Sie den Status bestimmter Pushs über die CID.
Beispielanfragen
Einzel-Push mit CID
curl --insecure -X POST -v https://pushapi-sgp.engagelab.com/v4/push \
-H "Content-Type: application/json" \
-u "AppKey:MasterSecret" \
-d '{
"options": {
"cid": "order-notify-20230701-001",
"time_to_live": 60
}
}'
Batch-Push mit CID
curl --insecure -X POST -v https://pushapi-sgp.engagelab.com/v4/push/batch/regid \
-H "Content-Type: application/json" \
-u "AppKey:MasterSecret" \
-d '{
"requests": [
{
"options": {
"cid": "user-12345-notification",
"time_to_live": 60
}
}
]
}'
Antwortverarbeitung
Erfolgreicher erster Push
{
"msg_id": "2460001"
}
Wiederholter Push mit gleicher CID
{
"msg_id": "2460001" // Gibt die msg_id des ersten Pushs zurück
}
Ungültiges CID-Format
{
"error": {
"code": 23003,
"message": "CID-Format entspricht nicht den Anforderungen"
}
}
Fehlercode-Beschreibung
| Fehlercode | Beschreibung | Lösung | HTTP-Statuscode |
|---|---|---|---|
| 21003 | Ungültiges CID-Format oder Länge überschritten | CID-Format prüfen; sicherstellen, dass die Länge ≤ 64 Zeichen ist | 400 |
Best Practices
- CID für geschäftskritische Nachrichten nutzen: Verwenden Sie CID für Nachrichten wie Zahlungsbenachrichtigungen und wichtige Alarme.
- Aussagekräftige Bezeichner generieren: Nutzen Sie Formate wie
businessType-userID-timestamp(z. B.payment-12345-202307011030). - Netzwerk-Retry-Mechanismus: Bei Netzwerkausfällen mit derselben CID erneut senden.
- Unterscheidbare Bezeichner bei Batch-Pushes: Für jede Anfrage in Batch-Pushes eine eindeutige CID verwenden, um das Tracking zu erleichtern.
- Clientseitiges CID-Logging: CIDs auf der Clientseite protokollieren, um Nachrichten zu deduplizieren und Statusabfragen zu ermöglichen.
CID-Funktionalität bei geplanten Aufgaben
Kernfunktionen
Die CID kann auch bei der Erstellung von geplanten Aufgaben verwendet werden, um doppelte Erstellung identischer Aufgaben zu verhindern:
- Die Wiederverwendung derselben CID gibt die zuvor erzeugte
schedule_idzurück. - Verhindert die doppelte Erstellung von geplanten Aufgaben im System.
Schlüsseleigenschaften
| Merkmal | Beschreibung |
|---|---|
| Gültigkeitsdauer | 1 Stunde |
| Formatvorgaben | Alphanumerische Zeichen, Unterstriche, Bindestriche; Länge ≤ 64 Zeichen |
| Eindeutigkeit | Muss unter demselben Appkey eindeutig sein |
Beispielanfrage
curl --insecure -X POST -v https://pushapi-sgp.engagelab.com/v4/schedules \
-H "Content-Type: application/json" \
-u "AppKey:MasterSecret" \
-d '{
"cid": "daily-reminder-202307",
"trigger": {
"daily": {
"start": "2023-07-01",
"time": "09:00:00"
}
}
}'
Antwortverarbeitung
Erfolgreiche erste Erstellung
{
"schedule_id": "0123456789"
}
Wiederholte Erstellung mit gleicher CID
{
"schedule_id": "0123456789" // Gibt die schedule_id der ersten Erstellung zurück
}
Best Practices
- Periodische Aufgaben eindeutig kennzeichnen: Zyklusinformationen in die CID aufnehmen (z. B.
weekly-report-2023w27). - Parameterzusammenfassung in der CID: Einen Hash wichtiger Parameter einbinden (z. B.
birthday-reminder-md5(params)). - Koordination im verteilten System: Dieselbe CID in mehreren Service-Instanzen verwenden, um doppelte Aufgaben zu vermeiden.
- Mechanismus zur Aufgabenaktualisierung: Bei Änderungen an Aufgaben eine neue CID verwenden.
EngageLab-Verarbeitungsablauf
graph TD
A[Empfange Anfrage] --> B{Enthält CID?}
B -->|Ja| C[Abfrage Redis]
B -->|Nein| D[Normale Verarbeitung]
C --> E{CID vorhanden?}
E -->|Ja| F[Gebe gespeicherte msg_id/schedule_id zurück]
E -->|Nein| G[Verarbeite Anfrage]
G --> H[Speichere CID → ID-Zuordnung]
H --> I[Gebe neue ID zurück]Häufig gestellte Fragen
F: Warum beträgt die CID-Gültigkeitsdauer 1 Stunde?
A: Sie reicht aus, um typische Wiederholungsfälle abzudecken, und verhindert ein unbegrenztes Wachstum des Speichers. Für geschäftskritische Anwendungen kann die Deduplizierungsdauer durch eigene Protokolle verlängert werden.
F: Kann dieselbe CID mit unterschiedlichen Appkeys verwendet werden?
A: Ja. CIDs müssen nur unter demselben Appkey eindeutig sein.
F: Garantiert die CID globale Eindeutigkeit?
A: Nein, sie muss nur unter demselben Appkey eindeutig sein; das System verlangt keine globale Eindeutigkeit.
F: Wie prüfe ich das CID-Format?
A: Verwenden Sie den regulären Ausdruck: /^[a-zA-Z0-9_-]{1,64}$/
Zusammenfassung
Durch den gezielten Einsatz des CID-Parameters können Sie:
- ✅ Doppelte Nachrichten durch Netzwerk-Wiederholungen verhindern
- ✅ Idempotenz für geschäftskritische Nachrichten sicherstellen
- ✅ Das Tracking von Nachrichten in verteilten Systemen vereinfachen
- ✅ Die Zuverlässigkeit des Gesamtsystems erhöhen
Wichtige Umsetzungsempfehlungen:
- Fügen Sie CIDs bei geschäftskritischen Nachrichten hinzu
- Nutzen Sie das Namensschema
business-entity-time - Implementieren Sie eine CID-basierte Deduplizierungslogik auf der Clientseite
- Überwachen Sie CID-bezogene Fehlercodes
Mit diesen Empfehlungen nutzen Sie die CID-Funktionalität optimal, bauen ein robusteres Push-Benachrichtigungssystem auf und lösen das Problem doppelter Pushs nachhaltig.
Jetzt Demo buchen und mehr über effizientes Push-Management erfahren!

