Editei a tabela de roteamento e nada mudou
Editei a tabela de roteamento e nada mudou
no default routing table in new targets! na mesma linha significa que a nova configuração não tinha
regras em default — geralmente porque um filtro referenciado por toda
regra está ausente ou desabilitado.Por que vendor1:from:==:MyBrand não funciona?
Por que vendor1:from:==:MyBrand não funciona?
== é um operador numérico. Aquela linha não apenas falha em casar — ela falha ao parsear, e
leva o reload inteiro junto. Use equals para texto:Meu padrão não casa com nada e nada reclama
Meu padrão não casa com nada e nada reclama
matches é uma expressão regular e é ancorada — precisa casar com o valor inteiro. ^61.* casa
com um destino completo; um 61 solto casa apenas com a string de dois caracteres 61.startsWith compara texto literal. Uma expressão regular passada a ele pergunta se o valor
literalmente começa com ^(?:\+61, o que nada começa, então a regra carrega, é exibida e nunca
dispara. O painel avisa sobre isso; o gateway não.Regras abaixo do meu catch-all nunca rodam
Regras abaixo do meu catch-all nunca rodam
NORMAL para no primeiro match, e um catch-all casa com tudo — então qualquer
coisa abaixo dele é inalcançável. Nada recusa a tabela; as regras parseiam perfeitamente.Mova-o para o final. A tabela é reportada sob unreachable-rules em routing_warnings em
/ops/health, e o painel conta as regras mortas para você.Desabilitei um filtro para alargar uma regra e a regra parou de casar inteiramente
Desabilitei um filtro para alargar uma regra e a regra parou de casar inteiramente
Desabilitei um filtro para retirar uma rota e nada aconteceu
Desabilitei um filtro para retirar uma rota e nada aconteceu
default sem regras, o reload inteiro foi rejeitado e as tabelas
anteriores continuam em serviço.Desabilitar um filtro não é uma forma de retirar uma rota. Delete ou desabilite a regra.Como descubro por que uma mensagem específica não casou?
Como descubro por que uma mensagem específica não casou?
outSms.routing.debug — ele loga toda regra de toda mensagem e renderiza o objeto
inteiro da mensagem para fazer isso, então é inutilizável nas taxas em que perguntas de roteamento
são feitas.O log ficou quieto. A regra quebrada foi corrigida?
O log ficou quieto. A regra quebrada foi corrigida?
routing.rule.broken é logado uma vez por regra, e o contador só reseta
quando uma nova tabela de roteamento é publicada. Silêncio é igualmente consistente com “já
reportado”.Observe routing_rules_broken em /ops/health — o mesmo fato como um número — e depois de um fix,
observe se a linha reaparece em vez de ficar ausente.routing_failed_queue não é zero. O que significa?
routing_failed_queue não é zero. O que significa?
outSms.enqueueFailedRouting estiver setado — então na configuração
ordinária essas mensagens se foram, e este contador é o único lugar onde esse fato existe.Alerte nele. routing_retry_queue é o vizinho benigno: mensagens esperando um backoff, ordinário
em números pequenos, um gap de roteamento quando fica alto.Ordem de regra importa em uma tabela least-cost?
Ordem de regra importa em uma tabela least-cost?
LCR varre toda regra, trata os matches como alternativas, e deixa a tarifa de custo
decidir. Reordenar não muda nada.Se uma tabela least-cost está se comportando como uma tabela first-match, cheque o nome da função —
um nome não reconhecido, como ->function(LRC), cai de volta a NORMAL com apenas uma linha de log.
Veja Least-cost routing.Um fornecedor na minha tabela LCR não tem tarifa de custo. Ele vai bloquear o tráfego?
Um fornecedor na minha tabela LCR não tem tarifa de custo. Ele vai bloquear o tráfego?
Por que meu grupo de fornecedores ignora seus pesos, ou seus membros?
Por que meu grupo de fornecedores ignora seus pesos, ou seus membros?
weighted — configure um sob round-robin ou
failover e nada divide, o que o gateway diz em WARN em vez de deixar você acreditar o contrário.E blocos de grupo precisam vir antes do primeiro cabeçalho [table]. Dentro de um bloco de
tabela uma linha de membro não casa com nada e é descartada silenciosamente, então o grupo tem menos
membros do que aparenta ter.Uma regra pode enviar uma mensagem a todo membro de um grupo?
Uma regra pode enviar uma mensagem a todo membro de um grupo?
+copied numa regra
de grupo ainda copia para um membro.Se todo membro está fora a regra não envia nada, loga cause=group-all-dead nomeando todos os que
tentou, e o scan continua, o que é o que mantém uma regra de fallback escrita abaixo dela
alcançável.O que acontece quando uma fila enche?
O que acontece quando uma fila enche?
ESME_RMSGQFUL (0x14) e nada cobrado, REST
com 503 queueFull e qualquer coisa já cobrada é reembolsada. Dentro do gateway uma fila cheia é
backpressure: o router esperando por uma fila cheia de worker é o router indo na velocidade que o
fornecedor aguenta.smsg.queue.capacity e inQueue.capacity ambos padrão 0, significando sem limite. Não há limite
padrão porque um limite é uma afirmação sobre seu próprio tráfego e heap.Quantos submit_sm uma mensagem pode me custar?
Quantos submit_sm uma mensagem pode me custar?
maxRetries limita o total em um fornecedor, entre retries in-worker e cada volta pelo router.Ele costumava limitar apenas a metade in-worker, com cada hop do router entregando uma nova cota —
então 1 junto com vinte tentativas de roteamento significava cerca de 100 PDUs para uma mensagem.
Recheque o valor se você tunou em torno disso. Fazer failover para um fornecedor diferente ainda
começa um orçamento fresco.Preciso de RabbitMQ?
Preciso de RabbitMQ?
amqp.bridge.degraded.Mensagens são aceitas e depois somem. Por onde começo?
Mensagens são aceitas e depois somem. Por onde começo?
maxAttempts é o único motivo que significa roteamento. headerNotApproved, templateNotMatched,
missingMandatoryTlv, insufficientCredit e filtered todos significam que a mensagem foi recusada
antes de o roteamento ser sequer alcançado. Walkthrough completo:
Nothing is delivered.