Subscribe) ou du polling (Pull) — et retirez chaque accusé avec Ack. Les deux lisent
la même file.
C’est l’alternative à un endpoint webhook : rien à exposer sur internet,
rien contre quoi la passerelle doit réessayer, et des accusés conservés jusqu’à ce que vous les ayez.
Quels accusés arrivent dans le flux
Un accusé est mis en file pour votre login quand toutes ces conditions sont réunies :- le message a été envoyé par votre login HTTP — sur gRPC ou sur REST ;
- il a demandé des accusés —
dlr: trueen gRPC,"dlr": "yes"en REST — et cet accusé est l’un de ceux qu’il a demandés (dlr_level:1progression,2l’issue,3les deux) ; - il ne porte aucun
dlr_url.
dlr_url voit ses accusés envoyés à cette URL et
jamais au flux. Les messages envoyés en SMPP n’y apparaissent jamais — ils reçoivent leurs accusés sur
le bind.
Les envois REST peuvent aussi utiliser le flux. Sur une plateforme où gRPC et le flux sont activés,
REST accepte
"dlr": "yes" sans dlr_url, et ces accusés arrivent ici. Là où gRPC est désactivé,
cette requête REST est toujours refusée 400, parce que les accusés n’auraient nulle part où aller.
Voir POST /secure/send.UNKNOWN dans le flux, comme le ferait un webhook.
Le message Receipt
Le corps JSON du webhook, un champ par clé, plus deux champs de livraison à la fin :
Les champs optionnels sont absents, pas vides, quand il n’y a rien à dire. Tout ce que le
guide des accusés de livraison dit de
level, stat et err
s’applique sans changement.
La livraison est au moins une fois
1
Un accusé ne quitte la file que lorsque vous l'acquittez avec Ack
Ou lorsque la rétention le supprime — voir Limites et rétention.
2
Un accusé livré vous est loué pour 120 secondes
S’il n’est pas acquitté d’ici là, il est livré à nouveau — au
Subscribe ou au Pull de votre login
qui demande ensuite — avec delivery_count augmenté de un.3
Un flux qui se termine rend ses accusés immédiatement
Quand un flux
Subscribe se termine — vous annulez, la connexion tombe, la passerelle redémarre —
les accusés qu’il avait livrés et que vous n’aviez pas acquittés sont libérés immédiatement, pas
après le bail.Ack
already_gone n’est pas une erreur. Un Ack répété après un timeout est sûr, et c’est exactement
dans ce cas que vous en répéterez un. Plus de 1000 jetons dans un seul appel est un INVALID_ARGUMENT.
Un jeton fonctionne sur n’importe quel nœud de passerelle et à travers les redémarrages, mais seulement
pour le login auquel il a été livré. Groupez vos acquittements : un Ack de 500 jetons coûte bien moins
que 500 Ack d’un jeton.
Pull, le polling
max accusés (au plus 1000), les plus anciens d’abord.
- S’il n’y en a aucun en attente et que
wait_secondsest supérieur à 0, il attend jusqu’à cette durée — 20 secondes au plus — et revient dès qu’un accusé arrive. C’est un long poll, et c’est ainsi que vous évitez une boucle active. - Avec
wait_seconds: 0, il revient immédiatement, éventuellement vide.
Pull convient à un job batch, à un worker qui se réveille sur un minuteur, ou à un langage dont vous
préférez ne pas dépendre du support du streaming.
Subscribe, le streaming
window borne le nombre d’accusés livrés mais non acquittés que le flux détient. À la limite de la
fenêtre, le flux se met en pause jusqu’à ce que vous appeliez Ack — sur n’importe quel canal. Non
défini, ou au-dessus du maximum de la passerelle (1000 par défaut), c’est le maximum qui est utilisé.
Plusieurs lecteurs partagent la file
Plusieurs fluxSubscribe — et Pull — d’un même login partagent la file : chaque accusé va à
exactement l’un d’eux à la fois. Utilisez cela pour répartir le traitement des accusés sur plusieurs
workers. Pour donner des flux séparés à des applications séparées, donnez-leur des logins HTTP séparés.
Ordre
Au mieux, par ordre d’arrivée. Il n’y a aucune garantie d’ordre entre nœuds de passerelle, et un accusé relivré arrive après des accusés plus récents. Une issue peut arriver avant un accusé de progression pour le même message. Ordonnez parlevel — 2 est final — et par done_date, jamais par ordre d’arrivée. Une fois que
vous détenez un accusé level: 2 pour un message, ignorez tout level: 1 qui arrive après.
Limites et rétention
Votre fournisseur peut modifier chacune de ces valeurs.
Voir aussi
Exemples
Boucles Subscribe, Pull et Ack en Python, Java et Go.
Le webhook d'accusé de livraison
Les mêmes champs, POSTés vers votre URL.