Todos os produtos
Search
Central de documentação

Microservices Engine:Registro condicional para inicialização elegante (visualização pública)

Última atualização: Jun 28, 2026

O registro com atraso fixo atende à maioria dos microsserviços, mas é insuficiente quando o tempo de inicialização varia. Um atraso muito curto causa tráfego prematuro, enquanto um atraso excessivo desperdiça tempo de implantação. O registro condicional permite que a aplicação sinalize quando está pronta para que o agente do Microservices Engine (MSE) registre o serviço no momento exato.

Nota

Este recurso está em visualização pública e requer a versão 4.6.0 ou posterior do agente MSE. Para especificar uma versão do agente, consulte Especifique uma versão do agente MSE.

Quando usar o registro condicional

Use o registro condicional em vez do registro com atraso fixo quando a aplicação:

  • Carregar caches, pré-computar índices ou executar outras inicializações assíncronas com duração imprevisível.

  • Depender da disponibilidade de recursos locais não expressável como um simples atraso de tempo.

  • Exigir controle preciso sobre o início do recebimento de tráfego de microsserviços.

Se o tempo de inicialização for previsível, o registro com atraso fixo é mais simples e suficiente. Se você ainda não conhece os recursos de inicialização e desligamento elegantes do MSE, use primeiro a solução de registro com atraso fixo. Ela cobre a maioria dos cenários típicos de aplicação. O registro condicional exige alteração de código na aplicação. Avalie essa troca antes de prosseguir.

Como funciona

O agente MSE monitora uma propriedade de sistema Java definida nos parâmetros de inicialização ou nas variáveis de ambiente. A aplicação define essa propriedade como true após concluir a lógica de inicialização personalizada. Ao detectar o valor da propriedade, o agente aciona o registro do microsserviço.

Antes do atendimento da condição, o serviço não é registrado e não recebe tráfego.

Fluxo de inicialização com sonda de prontidão do Kubernetes

Ao combinar o registro condicional com uma sonda de prontidão do Kubernetes, a sequência de inicialização segue estas etapas:

Fase

O que acontece

1. Início do Pod

O contêiner inicia a execução.

2. Inicialização da aplicação

A lógica de negócio executa (aquecimento de cache, pré-carregamento de dados, etc.).

3. Definição da condição

O código da aplicação define a propriedade de sistema como true.

4. Agente MSE registra o serviço

O agente detecta a condição e inicia o registro do microsserviço.

5. Serviço aceita tráfego

O registro do microsserviço tem êxito e o serviço passa a processar requisições.

6. Aprovação na sonda de prontidão

A sonda de prontidão do Kubernetes na porta 55199/readiness retorna status íntegro.

7. Pod torna-se Ready

O Kubernetes marca o pod como Ready e direciona o tráfego externo para ele.

Pré-requisitos

Antes de começar, verifique se você tem:

Declarar a chave de condição

Adicione a seguinte configuração aos parâmetros de inicialização ou às variáveis de ambiente da aplicação para declarar a chave da propriedade de sistema usada como condição de registro.

Formato:

mse_lossless_register_condition_on_system_property_true="<your-condition-key>"

Exemplo:

# Use PRODUCT_PRELOAD_COMPLETED as the registration condition key
mse_lossless_register_condition_on_system_property_true="PRODUCT_PRELOAD_COMPLETED"

Substitua <your-condition-key> por um nome descritivo que reflita a lógica de inicialização.

Defina a condição no código da aplicação

Após concluir todas as tarefas de inicialização, chame System.setProperty para definir a chave de condição como true. O agente MSE detecta essa alteração e registra o serviço.

No exemplo a seguir, um cache de produtos carrega de forma assíncrona. Depois que o cache fica pronto, o código define a propriedade de sistema para sinalizar a prontidão:

@Component
public class HotProductInitComponent {
    public ScheduledExecutorService executor = Executors.newScheduledThreadPool(
            1,
            new NameThreadFactory("product-preload-pool"));

    @Value("${demo.product.init.delay.seconds:3}")
    public long initDelaySeconds;

    public void asyncLoadPoductDataIntoCache() {
        executor.schedule(() -> {
            // ... load product data into cache ...

            // Signal that initialization is complete.
            // The MSE agent detects this and registers the service.
            System.setProperty("PRODUCT_PRELOAD_COMPLETED", "true");

        }, initDelaySeconds, TimeUnit.SECONDS);
    }
}

Interação com outros recursos do MSE

Tópico

Detalhe

Compatibilidade com sonda de prontidão

O registro condicional funciona com a sonda de prontidão do MSE no endpoint 55199/readiness.

Sem opção separada para inicialização elegante

Ao definir mse_lossless_register_condition_on_system_property_true nos parâmetros de inicialização ou nas variáveis de ambiente, o registro condicional é ativado automaticamente. Não é necessário ativar uma opção separada de inicialização elegante.

Registro atrasado não obrigatório

Após ativar o registro condicional, não é preciso configurar o registro atrasado para a inicialização elegante.