Alles Wissenswerte, nichts Unwissendes.
Warum gibt es überhaupt ein Fenster?
SMPP ist asynchron: Sie senden eine submit_sm, und der SMSC antwortet mit einer submit_sm_resp. Sie müssen jedoch nicht auf diese Antwort warten, bevor Sie die nächste PDU senden. Das Fenster gibt an, wie viele Nachrichten Sie im Voraus senden dürfen. Bei einem Fenster von 1 wird die Sitzung zu einer Anfrage-Antwort-Sitzung, und Ihr Durchsatz sinkt auf eine Nachricht pro Roundtrip – bei einer 50-ms-Verbindung sind das 20 Nachrichten pro Sekunde, unabhängig von den Vertragsbedingungen.
Die Arithmetik
Der ungefähre Durchsatz ergibt sich aus der Fenstergröße geteilt durch die Roundtrip-Latenz. Ein Fenster von 10 ms bei einer Roundtrip-Latenz von 50 ms ergibt etwa 200 Nachrichten pro Sekunde bei einem Bindungsvorgang; ein Fenster von 50 ms ergibt etwa 1.000. Daher kann der tatsächliche Durchsatz bei zwei Kunden mit identischen Vertragsbedingungen stark variieren – einer hat das Fenster optimiert, der andere nicht. Die Erhöhung des Fensters verursacht auf Ihrer Seite keine zusätzlichen Kosten außer dem Speicherplatz für die nicht bestätigten PDU.
Warum man es nicht einfach auf 1.000 einstellen kann
Das Zeitfenster wird mit dem Betreiber oder Provider vereinbart. Eine Überschreitung führt zu ESME_RTHROTTLED -Antworten oder einem Verbindungsabbruch. Das SMSC muss außerdem den Status jeder nicht bestätigten PDU speichern. Ab einem bestimmten Punkt verlagert sich der Engpass vom Zeitfenster auf die Übermittlungsrate des SMSC selbst. Ein größeres Zeitfenster führt lediglich zu einer längeren Warteschlange, die nicht abgebaut werden kann. Legen Sie Zeitfenster und TPS Obergrenze gemeinsam fest und behandeln Sie sie als eine einzige Einstellung.
Mehrere Bindungen und Reihenfolge
Reicht ein einzelner Datenblock nicht aus, sind mehrere Datenblöcke die bessere Lösung als ein unbegrenztes Datenfenster – die meisten Anbieter legen den Durchsatz pro Datenblock fest. Achten Sie auf die Reihenfolge der Nachrichten: PDU über verschiedene Datenblöcke hinweg haben keine garantierte relative Reihenfolge. Daher sollten mehrteilige Nachrichten oder Sequenzen, die ein Benutzer der Reihe nach liest, auf einem einzigen Datenblock bleiben. Halten Sie auf jedem Datenblock einen enquire_link aktiv, damit ein ungenutzter Datenblock nicht stillschweigend getrennt wird.