Todos os produtos
Search
Central de documentação

SchedulerX:Connect a Spring Boot application to SchedulerX

Última atualização: Sep 25, 2026

O SchedulerX é um service de agendamento distribuído de jobs do Microservices Engine (MSE). Ele utiliza uma arquitetura servidor-agente: o servidor do SchedulerX gerencia o agendamento e a coordenação, enquanto um agente incorporado à sua aplicação Spring Boot execute os jobs. Após conectar sua aplicação, você pode definir, agendar e monitorar jobs pelo console do SchedulerX.

Pré-requisitos

Antes de começar, certifique-se de que você possui:

  • Um projeto Spring Boot 2.x ou 3.x

  • (Opcional) Um namespace para isolamento de recursos — consulte a seção "Criar um namespace" de Namespace management

Etapa 1: Crie uma aplicação SchedulerX

Definir configurações básicas

  1. Faça login no console do MSE SchedulerX e selecione uma região na barra de navegação superior.

  2. No painel de navegação à esquerda, clique em Application Management. Selecione um Namespace e clique em Create Application.

  3. Insira as configurações a seguir e clique em Next.

    Importante

    Crie os recursos na região e no namespace corretos. Certifique-se de que as informações dos recursos sejam válidas.

    Configuração

    Descrição

    Padrão

    Application Name

    Nome descritivo para a aplicação.

    Nenhum

    Application ID

    GroupID para acesso do agente. Deve ser exclusivo dentro do namespace. Pode ser igual ao Application Name.

    Nenhum

    Application Type

    Regular App — não implantado no Kubernetes ou não requer jobs Kubernetes. k8s App — implantado no Kubernetes e requer jobs Kubernetes.

    Regular App

    Edition

    Selecione uma edição de acordo com suas necessidades.

    Professional Edition

    Simple Log Service

    Ative para visualizar logs de agendamento no console. Requer configuração de Log4j ou Logback.

    Off

    load5

    Média máxima de carga nos últimos 5 minutos. Não pode exceder o número de núcleos de CPU na máquina do cliente.

    0

    Memory Usage

    Quando o uso médio de memória nos últimos 5 minutos excede esse limiar, o worker é marcado como ocupado.

    90%

    Disk Usage

    Quando o uso de disco excede esse limiar, a máquina do cliente é marcada como ocupada.

    95%

    Trigger Busy Machine

    Continua disparando jobs mesmo quando a máquina está ocupada.

    On

    Configuração

    Descrição

    Padrão

    Maximum Number Of Jobs

    Número máximo de jobs suportados em um grupo.

    1000

    Automatic Scale-out

    Ative para habilitar o dimensionamento automático. Requer Global Job Count.

    Off

    Traffic Throttling

    Ative para limitar o tráfego. Requer Task Instance Concurrency.

    Off

    Calendar

    Agenda com base em Financial Day (dia de negociação) ou Workday (dia útil).

    0

    image

Configure notificações

  1. Na página Notification Configuration, selecione um Notification Channel e defina os Contacts. Adicione contatos individualmente ou use um grupo de contatos. Para crie um grupo de contatos, consulte Create a notification contact or notification contact group.

    Configuração

    Descrição

    Notification Channel

    Text Message, Email, Webhook ou Phone.

    Email

    Endereço de e-mail do contato.

    Webhook

    URL do webhook para WeCom, Lark ou DingTalk. Separe múltiplas URLs com vírgulas (,). Para o DingTalk, adicione a palavra-chave "SchedulerX" (diferencia maiúsculas de minúsculas) na configuração do robô. Para detalhes sobre a configuração de webhooks, consulte Webhook configuration description. Para saber como obter uma URL de webhook, consulte DingTalk Developer Documentation, WeCom Developer Documentation e Lark Developer Documentation.

    Mobile Phone Number

    Número de telefone do contato.

    image

  2. Atualize a página e confirme que sua aplicação aparece na região e no namespace selecionados.

Etapa 2: Adicionar a dependência do SchedulerX

Adicione a dependência schedulerx2-spring-boot-starter ao arquivo pom.xml do seu projeto Spring Boot:

<dependency>
  <groupId>com.aliyun.schedulerx</groupId>
  <artifactId>schedulerx2-spring-boot-starter</artifactId>
  <version>1.11.5</version>  <!-- Replace with the latest version -->
</dependency>
Importante

Substitua a versão pela versão mais recente do agente. Para consultar o histórico de versões, acesse Agent release notes.

Se o seu projeto utiliza Logback, exclua as dependências do Log4j incluídas por padrão:

<dependency>
  <groupId>com.aliyun.schedulerx</groupId>
  <artifactId>schedulerx2-spring-boot-starter</artifactId>
  <version>1.11.5</version>
  <exclusions>
    <exclusion>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
    </exclusion>
    <exclusion>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
    </exclusion>
  </exclusions>
</dependency>

Etapa 3: Configure os parâmetros de conexão

Adicione as seguintes propriedades ao arquivo application.properties:

# Required: SchedulerX connection settings
spring.schedulerx2.endpoint=${endpoint}
spring.schedulerx2.namespace=${namespace}
spring.schedulerx2.groupId=${groupId}
# The appKey parameter is supported only in versions 1.2.1 and later.
spring.schedulerx2.appKey=${appKey}

# If you do not use an appKey, you can use an Alibaba Cloud AccessKey and SecretKey, or an STS token.
#spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey}
#spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}
#spring.schedulerx2.stsToken=${aliyunStsToken}

Origem dos parâmetros:

Faça login no console do SchedulerX. No painel de navegação à esquerda, clique em Applications. Localize a aplicação desejada e clique em AccessConfig na coluna Operation. No painel AccessConfig, selecione Spring Boot na lista suspensa.

image

Descrição dos parâmetros:

  • endpoint: endpoint do SchedulerxWorker. O valor deve corresponder ao endpoint da região em que a aplicação está implantada. Para mais informações, consulte Endpoints.

  • namespace: ID do namespace ao qual a aplicação pertence. Consulte o ID do namespace na página Namespaces do console do SchedulerX. 1

  • groupId e appKey: ID e chave da aplicação. Consulte os valores na página Applications do console do SchedulerX. 1

  • aliyunAccessKey e aliyunSecretKey: AccessKey ID e AccessKey secret da sua conta Alibaba Cloud.

Importante

O SchedulerX e o agente devem estar na mesma região. Uma incompatibilidade de região causa falha na conexão. Se a aplicação é executada fora da Alibaba Cloud (on-premises ou outro provedor de cloud), ative o acesso pela Internet e crie uma aplicação SchedulerX na região de Internet. Consulte Connect to SchedulerX over the Internet from an on-premises environment.

Se a aplicação utiliza YAML, adicione essas configurações ao arquivo application.yml:

spring:
  schedulerx2:
    endpoint: ${endpoint}
    namespace: ${namespace}
    groupId: ${groupId}
    appKey: ${appKey}
Nota

Para gerencie múltiplas aplicações a partir de um único cliente, separe os IDs das aplicações com vírgulas: spring.schedulerx2.groupId=animals.dog,animals.cat. Cada aplicação possui isolamento para gerenciamento de permissões e não requer um worker separado.

Parâmetros opcionais

Os parâmetros a seguir oferecem suporte a casos de uso avançados:

Parâmetro

Descrição

Padrão

Desde

spring.schedulerx2.enabled

Ative ou desativa o starter do SchedulerX.

true

0.1.7

spring.schedulerx2.host

Especifique o endereço IP quando a máquina possui múltiplas placas de rede ou utiliza VPN.

Detectado automaticamente

0.1.7

spring.schedulerx2.port

Porta na qual o agente escuta.

Porta disponível aleatória

0.1.7

spring.schedulerx2.blockAppStart

Bloqueia a inicialização da aplicação caso o SchedulerX falhe ao inicializar.

true

1.1.0

spring.schedulerx2.shareContainerPool

Permite que todos os jobs do agente compartilhem um único pool de threads.

false

1.2.1.2

spring.schedulerx2.sharePoolSize

Tamanho do pool de threads quando o compartilhamento está ativado.

64

1.2.1.2

spring.schedulerx2.label

Rótulos para direcionar workers específicos durante canary release ou testes de carga.

Nenhum

1.2.2.2

spring.schedulerx2.enableCgroupMetrics

Usa cgroup para coletar métricas do agente. Ative manualmente em ambientes Kubernetes.

false

1.2.2.2

spring.schedulerx2.cgroupPathPrefix

Caminho do cgroup no contêiner.

/sys/fs/cgroup/cpu/

1.2.2.2

spring.schedulerx2.enableHeartbeatLog

Registra dados de heartbeat em ${user.home}/logs/schedulerx/heartbeat.log.

true

1.2.4

spring.schedulerx2.mapMasterStatusCheckInterval

Intervalo (ms) para verifique a conclusão de tarefas no modelo Map. Valores menores aumentam a frequência de agendamento para jobs com granularidade de segundos.

3000

1.2.5.2

spring.schedulerx2.enableSecondDelayCycleIntervalMs

Interpreta intervalos de jobs com granularidade de segundos em milissegundos em vez de segundos.

false

1.2.5.2

spring.schedulerx2.broadcastMasterExecEnable

Exige que o nó primário execute jobs de broadcast.

true

1.8.13

spring.schedulerx2.broadcastDispatchRetryTimes

Número máximo de tentativas após falha no despacho de broadcast. O intervalo entre tentativas é fixo em 2 segundos.

3

1.8.13

spring.schedulerx2.enableSecondDelayStandaloneDispatch

Ative o despacho de jobs standalone com granularidade de segundos.

false

1.8.13

Etapa 4: Crie um processador de job

Crie uma classe que estenda JavaProcessor para definir a lógica do job. O exemplo a seguir imprime uma mensagem a cada execução:

package com.aliyun.schedulerx.test.job;

import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import com.alibaba.schedulerx.worker.processor.ProcessResult;
import org.springframework.stereotype.Component;

@Component
public class MyHelloJob extends JavaProcessor {

    @Override
    public ProcessResult process(JobContext context) throws Exception {
        System.out.println("hello schedulerx2.0");
        return new ProcessResult(true);  // Return true to indicate success
    }
}
  • @Component registra a classe como um bean do Spring para que o SchedulerX possa descobri-la.

  • Estenda JavaProcessor e sobrescreva process para definir a lógica do job.

  • Retorne new ProcessResult(true) para sucesso ou new ProcessResult(false) para falha.

Etapa 5: Verifique a conexão

  1. Inicie sua aplicação Spring Boot.

  2. Faça login no console do MSE SchedulerX. No painel de navegação à esquerda, clique em Applications.

  3. Localize sua aplicação e clique em View instances na coluna Operation.

    View instances

  4. Verifique a coluna Total number of instances:

    • 0: a conexão falhou. Verifique os parâmetros de configuração (região, endpoint, namespace e GroupID) e confirme a conectividade de rede.

    • Maior que 0: a conexão foi bem-sucedida.

Próximos passos

Após verifique a conexão, crie um job no console do SchedulerX para acionar seu processador de job. Consulte a seção "Crie um job" de Job management.

Solução de problemas

Sintoma

Causa provável

Solução

O agente não consegue conectar (0 instâncias)

Incompatibilidade de região entre o SchedulerX e o agente

Confirme que ambos usam a mesma região. Verifique o valor de endpoint de acordo com Endpoints.

O agente não consegue conectar (0 instâncias)

A aplicação é executada fora da Alibaba Cloud sem um endpoint de Internet

Ative o acesso pela Internet e crie uma aplicação SchedulerX na região de Internet. Consulte Connect over the Internet.

O agente não consegue conectar (0 instâncias)

GroupID ou AppKey incorreto

Abra Applications > AccessConfig no console e confirme os valores.

Inicialização da aplicação bloqueada

O SchedulerX falhou ao inicializar com blockAppStart=true (padrão)

Defina spring.schedulerx2.blockAppStart=false para permitir que a aplicação inicie sem o SchedulerX, ou corrija o problema de conexão primeiro.

Consulte também