- Navios
- 8 de setembro de 2026 às 00:23 UTC
- Autor
- Kamo
- Enviar
- 98cf9f7
Não houve nenhum fluxo VOIP MESSAGES no NATS. Cada 'voip.*' publica respondido 503 Nenhum Respondedor Disponível e ambos os pods de mídia registrados, uma vez, no arranque: [VoipRelay] Falha ao assinar o voip.> assunto: [SUB-90007] Sem fluxos correspondentes para o assunto. Então a camada em tempo real estava morta. softphone call eventos, voicemail, e cada push móvel que os monta — e Cada metade falhou da mesma forma que ninguém se preocupa. A falha da publicação é capturada e logado em warn inside publiceNatsEvent; a falha de assinatura foi um único Linha de ERRO em uma cápsula que então correu por semanas parecendo saudável. A causa era um buraco de configuração. Cada serviço que possui súditos declara o seu stream em application.yml e o NatsConfig compartilhado o cria enquanto o JetStream O feijão é construído — EMAIL NOTIFICAÇÕES/email.>, DAEMON SYNC/daemon.>. Este serviço nada declarado, silenciosamente herdado o compartilhamento padrão CHAT MESSAGES/chat.>, e no boot já existe "NATS stream 'CHAT MESSAGES'". O buraco olhou exactamente como uma startup saudável. VoipNatsStreamProvisioner foi feito para cobrir isso e nunca correu uma vez. Foi... simples @Component anotado **************** - uma combinação Spring só avalia de forma confiável na auto-configuração — então o Feijão de Conexão foi ainda não visível durante a digitalização do componente, a condição era falsa, e o feijão nunca foi criado. Não registou nada, nem sequer o seu próprio "NATS não disponível, A saltar o ramo. Eliminado, a favor do mecanismo que funciona. VoipNatsStreamConfigTest marca a propriedade que realmente falhou: cada assunto este serviço publica em é coberto pelo fluxo que configura. Nada mais pequeno não havia código errado, apenas um fluxo que não existia. Separadamente, o quadro deu o nome da parte errada. «do número de telefone» transportado ************* que é a linha própria da org; o lado mais distante vive em ‘Número de Telefone Externo’. Os três consumidores lêem-no da forma natural, por isso texto inbound levantou uma janela intitulada com o próprio número do membro, executou seu contato procurar contra esse número e não encontrou ninguém, e empurrou para o telefone como "um texto de < seu próprio número>". Agora orientado por direção, com um explícito `externalPhoneNumber` que é sempre o lado distante — o campo para teclar, porque diferentemente de/para ele não inverte quando o membro responde. A carga também carrega anexoUrl e status, então um MMS ao vivo não é uma bolha vazia até um refetch. Uma publicação que falha agora loga no ERROR, e um pod sem NATS diz isso, em vez do que gravar mensagens e dizer a ninguém.