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_id des 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

  1. Netzwerk-Wiederholungen: Wiederholen Sie Pushs mit derselben CID bei instabilen Netzwerken.
  2. Idempotenz-Sicherung: Stellen Sie sicher, dass dieselbe Nachricht nicht mehrfach gesendet wird.
  3. 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 } }'
              
              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
    }
  }'

            
Diesen Codeblock im schwebenden Fenster anzeigen

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 } } ] }'
              
              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
        }
      }
    ]
  }'

            
Diesen Codeblock im schwebenden Fenster anzeigen

Antwortverarbeitung

Erfolgreicher erster Push

{ "msg_id": "2460001" }
              
              {
  "msg_id": "2460001"
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Wiederholter Push mit gleicher CID

{ "msg_id": "2460001" // Gibt die msg_id des ersten Pushs zurück }
              
              {
  "msg_id": "2460001" // Gibt die msg_id des ersten Pushs zurück
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Ungültiges CID-Format

{ "error": { "code": 23003, "message": "CID-Format entspricht nicht den Anforderungen" } }
              
              {
  "error": {
    "code": 23003,
    "message": "CID-Format entspricht nicht den Anforderungen"
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

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

  1. CID für geschäftskritische Nachrichten nutzen: Verwenden Sie CID für Nachrichten wie Zahlungsbenachrichtigungen und wichtige Alarme.
  2. Aussagekräftige Bezeichner generieren: Nutzen Sie Formate wie businessType-userID-timestamp (z. B. payment-12345-202307011030).
  3. Netzwerk-Retry-Mechanismus: Bei Netzwerkausfällen mit derselben CID erneut senden.
  4. Unterscheidbare Bezeichner bei Batch-Pushes: Für jede Anfrage in Batch-Pushes eine eindeutige CID verwenden, um das Tracking zu erleichtern.
  5. 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_id zurü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" } } }'
              
              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"
      }
    }
  }'

            
Diesen Codeblock im schwebenden Fenster anzeigen

Antwortverarbeitung

Erfolgreiche erste Erstellung

{ "schedule_id": "0123456789" }
              
              {
  "schedule_id": "0123456789"
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Wiederholte Erstellung mit gleicher CID

{ "schedule_id": "0123456789" // Gibt die schedule_id der ersten Erstellung zurück }
              
              {
  "schedule_id": "0123456789" // Gibt die schedule_id der ersten Erstellung zurück
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Best Practices

  1. Periodische Aufgaben eindeutig kennzeichnen: Zyklusinformationen in die CID aufnehmen (z. B. weekly-report-2023w27).
  2. Parameterzusammenfassung in der CID: Einen Hash wichtiger Parameter einbinden (z. B. birthday-reminder-md5(params)).
  3. Koordination im verteilten System: Dieselbe CID in mehreren Service-Instanzen verwenden, um doppelte Aufgaben zu vermeiden.
  4. 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:

  1. ✅ Doppelte Nachrichten durch Netzwerk-Wiederholungen verhindern
  2. ✅ Idempotenz für geschäftskritische Nachrichten sicherstellen
  3. ✅ Das Tracking von Nachrichten in verteilten Systemen vereinfachen
  4. ✅ 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!

icon
Vertrieb kontaktieren