Apenas o primeiro é o que as pessoas geralmente querem dizer, e apenas o terceiro é surpreendente.
Configuração recarrega sozinha de qualquer jeito
O gateway faz poll por mudanças no banco.reload existe porque o poll está até trinta segundos
atrasado, o que é lento demais quando você está observando.
Crédito não é configuração
reload não toca nele, e este é o que pega as pessoas.
O gateway reserva crédito em blocos — movendo dinheiro de account_balance.balance para
reserved e mantendo o bloco em memória. É isso que mantém o caminho da mensagem fora do banco.
Então corrigir um saldo à mão não entra em vigor até que o bloco já entregue seja usado. Uma
conta configurada como zero continua enviando.
credit release devolve o restante não gasto de cada bloco para balance e escreve uma linha
RELEASE no ledger, para que a próxima mensagem reserve contra a cifra corrigida.
O mesmo comando depois de um crash
Umkill -9 deixa preso o que estava reservado. O dinheiro está estacionado, não perdido —
balance + reserved ainda bate — e credit release é como volta.
Um shutdown limpo faz isso sozinho.
O que um reload não faz
- Não reinicia workers. Um worker que falhou o bind faz retry em sua própria agenda; um listener que não conseguiu pegar sua porta faz retry no próximo poll ou reload sem precisar de restart.
- Não limpa estado de runtime configurado por
disable,suspendouhold. Estes estão deliberadamente fora da configuração para poderem agir imediatamente — e revertem no restart em vez de no reload. - Não muda o que uma sessão conectada tem permissão de fazer. Uma mudança de taxa se aplica a sessões SMPP já conectadas em cerca de 200 ms; não requer que refaçam bind.
Relacionado
Worker control
Os verbos que agem imediatamente em vez de num poll.
Prepaid credit
Blocos, reservas, e por que o saldo atrasa.