Chaque message en file a déjà été payé
La passerelle répond à une soumission avant de la router. Au moment où un message se trouve dans la file du routeur ou dans la file d’un fournisseur, le client a déjà reçu la confirmation d’acceptation et son solde a été débité.Les deux limites
Il n’y a délibérément aucune valeur par défaut. Une limite est une affirmation sur votre propre
trafic et votre propre tas : trop bas refuse des messages qui auraient été livrés, trop haut ne se
déclenche jamais avant que la JVM ne le fasse.Partez de combien de messages vous êtes prêt à retenir pour un fournisseur devenu silencieux, et lisez
d’abord les profondeurs sur
/ops/health sous charge normale : router_queue et le queue_depth de
chaque worker, avec la limite affichée à côté une fois qu’elle est fixée. Détails complets dans
Limites.Seules les deux entrées refusent
À l’intérieur de la passerelle, une file pleine est un signal de contre-pression, pas une erreur. Le routeur qui attend sur une file de worker pleine est le routeur qui va à la vitesse que le fournisseur peut prendre, ce qui est le comportement correct. À une entrée, il y a un client qui maintient une connexion ouverte, donc attendre bloquerait cette session plutôt que de la ralentir. Ces deux portes refusent à la place :
Voir Codes de statut SMPP.
Ce qu’un message peut coûter chez un fournisseur
maxRetries borne le total des submit_sm qu’un message peut coûter chez un fournisseur : à
travers les tentatives internes au worker et chaque aller-retour par le routeur.
outSms.routing.maxAttempts (défaut 20) est l’autre moitié : combien de fois un message peut faire le
tour du routeur avant d’être abandonné, remboursé et fermé en REJECTED avec reason=maxAttempts. Un
raté et un filtre demandant le retour du message comptent tous les deux.
outSms.routing.retryBackoffMillis (défaut 100) est un délai sur le message, pas sur le routeur :
le thread le gare et passe directement au suivant.
Deux nombres qui signifient que des messages sont perdus
routing_retry_queue est la plus douce : des messages qui attendent la fin d’un back-off après un raté
ou une remise en file par un filtre. De petits nombres sont ordinaires. Un nombre qui reste élevé est
une table de routage qui ne couvre pas le trafic qui arrive.
Les deux sont sur /ops/health, et exposés en tant que fireflo_routing_failed_queue et
fireflo_routing_retry_queue. fireflo queue dump liste ce qui attend réellement (compte, produit,
destination, nombre de tentatives et âge) plutôt que juste combien ; voir
Files d’attente.
RabbitMQ est optionnel, et uniquement pour REST
- memory (défaut)
- rabbitmq
Aucune dépendance externe. Les deux entrées alimentent la file du routeur dans le processus.Un redémarrage perd tout ce qui n’avait pas atteint un fournisseur. Rien d’externe ne le
retient.