Desabilitar um filtro faz suas regras casarem menos, não mais
Então o efeito observável de desligar um filtro é que suas regras param de casar com nada, e seu tráfego cai na regra que segue. Um fornecedor diferente, ou um preço diferente.O que um filtro é para o gateway
Uma expansão em tempo de load, não uma indireção em runtime. Um filtro se expande exatamente nas condições que carrega, e essas são anexadas às condições de toda regra que o referencia. O teste real de uma regra é:Filtros vivem no banco (
app_filter, app_filter_condition) e são compartilhados com rating, que é o
ponto: nomeie um predicado uma vez, precifique e roteie pela mesma definição. A gramática de arquivo
não tem sintaxe para eles, então scripts/fireflo import routing deixa app_route_rule_filter
vazio. Veja routingTable.conf.Uma regra filtrada não é um catch-all
Um catch-all real é uma regra sem condições e sem filtros, colocada por último.Um filtro vazio conta como desabilitado
Um filtro sem condições salva e carrega, o que permite que um seja construído uma condição por vez. A resposta do gateway a isso também não é a intuitiva: um filtro vazio é adicionado ao conjunto de desabilitados, então toda regra que o referencia é pulada. Recusar um filtro vazio é o mesmo raciocínio de recusar um ausente — um filtro que não estreita nada alargaria toda regra que o carregasse.A rede de segurança, e por que ela não é um workaround
Pela mesma razão um filtro referenciado não pode ser deletado enquanto regras ainda apontam para ele. O painel de controle mostra a contagem de referências entre regras de rating e roteamento antes de deixar você mudar uma — o roteamento é a metade onde a consequência é “mensagens param de ser enviadas” em vez de “mensagens são precificadas de forma diferente”.Checando um antes de mudar
1
Leia a contagem
Filters no painel lista quantas regras de tarifa e quantas regras de roteamento referenciam
cada filtro. Desabilitar um filtro usado por quatro regras de roteamento remove quatro regras do
snapshot em execução.
2
Olhe o que pega o tráfego em vez
Para cada regra que seria pulada, encontre a próxima regra na mesma tabela com a qual o tráfego
casaria. Esse fornecedor é para onde o tráfego vai.
3
Confirme que o reload pegou
Depois de salvar, cheque
routing_warnings em /ops/health e o log por
Error parsing new routing table. Um reload rejeitado mantém a tabela anterior e parece que
nada aconteceu.Filter workers são uma coisa diferente
Uma regra também pode ter como alvo um filter worker — um worker pelo qual a mensagem passa em vez de um destino. Ele retorna um veredito, e o router age sobre ele:RESCHEDULE nunca foi implementado e cai de volta para re-enqueue, dizendo isso uma vez por
mensagem.Uma mensagem descartada é reembolsada e reportada; uma mensagem segurada para sempre não é —
que é por que contar o requeue é a troca pretendida em vez de um descuido.