La modification qui semblait ne rien faire
routingTable.conf est rechargé à chaud : une modification s’applique en environ 200 ms, sans redémarrage. Cette rapidité est précisément la raison pour laquelle le cas de la table conservée est facile à manquer. Il n’y a pas de redémarrage à remarquer, donc « ma modification n’a rien fait » est le seul symptôme.
Ce que fait le routeur pour un message
1
La soumission reçoit d'abord une réponse
La passerelle envoie
submit_sm_resp, ou le 200 REST, avant que le routage ne s’exécute. Le client a déjà été informé que le message a été accepté, et facturé pour cela.2
Le message va dans la file du routeur
Le travail accepté attend ici. Voir Files et nouvelles tentatives.
3
La table `default` est analysée
Les règles sont essayées de haut en bas et la première correspondance l’emporte. Une règle peut envoyer vers un fournisseur, vers un groupe de fournisseurs, ou vers une autre table.
4
Le worker choisi le prend
Le message est mis en file d’attente sur la file de ce fournisseur et part à la vitesse que le fournisseur autorise.
cdr_rejected.
Les tables sont un graphe, pas une liste
Une règle dont la cible nomme une autre table s’enchaîne vers elle, doncdefault → MESSAGE → cheapest est une forme ordinaire. Deux éléments bornent la récursion :
Une table atteinte deux fois par des chemins différents n’est pas un cycle :
default → a → c en parallèle de default → b → c se charge normalement.
Les deux choses qui se chargent puis dysfonctionnent en silence
Les deux apparaissent sur/ops/health sous routing_warnings, et chacune est consignée une seule fois lors de sa première apparition, plutôt qu’à chaque publication.
Quand les messages disparaissent
Avant de modifier une règle, écartez les trois causes qui ne relèvent pas du routage. Seul
reason = 'maxAttempts' dans cdr_rejected désigne le routage ; headerNotApproved, templateNotMatched, missingMandatoryTlv, insufficientCredit et filtered signifient tous que le message a été refusé avant même d’atteindre le routage. Voir Rien n’est livré.Demander pourquoi un message n’a pas correspondu
Suite
Écriture des règles
La grammaire en quatre parties, les opérateurs qui mentent, et les groupes de fournisseurs.
Routage au moindre coût
Là où l’ordre des règles cesse d’avoir un sens.
Filtres
Conditions nommées, et pourquoi en désactiver une restreint une règle à rien.
Files et nouvelles tentatives
Ce qui est déjà payé et attend en mémoire.