O SchedulerX permite executar tarefas agendadas em aplicações Spring Cloud implantadas no Enterprise Distributed Application Service (EDAS). Este guia orienta você na criação de uma tarefa do tipo Simple Job Single-instance Edition, no teste local e na implantação no EDAS.
O SchedulerX é a plataforma distribuída de agendamento de tarefas da Alibaba Cloud. Ele oferece:
Precisão inferior a um minuto: Agende tarefas com granularidade de segundos usando expressões cron.
Alta disponibilidade: Failover integrado e execução confiável.
Modelos de execução distribuída: Execute cargas de trabalho paralelas com modelos como MapReduce.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma conta Alibaba Cloud com o EDAS ativado
Acesso ao console do EDASconsole do EDAS
Etapa 1: Crie o projeto Maven
Crie um projeto Maven chamado scx-example.
Adicione as seguintes dependências ao seu arquivo pom.xml. Esta configuração utiliza Spring Boot 2.1.4.RELEASE com Spring Cloud Finchley.SR1.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<!-- SchedulerX Spring Boot starter -->
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>${schedulerx2.version}</version>
<!-- Exclude log4j if you use Logback -->
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
O Spring Boot 1.x atingiu o fim do suporte. Se você ainda usa Spring Boot 1.5.x com Spring Cloud Edgware, defina a versão do Spring Cloud Alibaba como 1.5.1.RELEASE.
Etapa 2: Crie o ponto de entrada da aplicação
Crie uma classe de inicialização chamada ScxApplication:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ScxApplication {
public static void main(String[] args) {
SpringApplication.run(ScxApplication.class, args);
}
}
Etapa 3: Crie um serviço de teste
Crie uma classe de serviço gerenciada pelo Spring chamada TestService. Esta classe valida se a injeção de Inversão de Controle (IoC) do Spring funciona corretamente na classe da tarefa.
import org.springframework.stereotype.Service;
@Service
public class TestService {
public void test() {
System.out.println("---------IOC Success--------");
}
}
Etapa 4: Implementar o processador da tarefa
Crie uma classe de tarefa chamada SimpleTask que implemente ScxSimpleJobProcessor. Esta classe define a lógica executada sempre que a tarefa é acionada.
import com.alibaba.edas.schedulerx.ProcessResult;
import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import org.springframework.beans.factory.annotation.Autowired;
public class SimpleTask implements ScxSimpleJobProcessor {
@Autowired
private TestService testService;
@Override
public ProcessResult process(JobContext context) {
System.out.println("-----------Hello world---------------");
testService.test();
return new ProcessResult(true);
}
}
O método process retorna ProcessResult(true) para indicar execução bem-sucedida. O Spring injeta automaticamente o TestService por meio da anotação @Autowired.
Etapa 5: Crie uma tarefa agendada no console do EDAS
Faça login no console do EDASconsole do EDAS.
Na região test, crie um grupo de tarefas agendadas e anote o ID do grupo.
-
No grupo de tarefas, crie uma tarefa com os seguintes parâmetros:
Parâmetro
Valor
Descrição
Application ID
O ID do grupo da etapa anterior
Vincula a tarefa ao seu grupo de tarefas
Processor class name
SimpleTaskNome completo da classe que implementa a interface da tarefa
Task type
Stand-alone operation
Executa a tarefa em uma única instância
cron expression
0 * * * * ?Aciona a tarefa uma vez por minuto
Description
(Deixe em branco)
Descrição opcional da tarefa
Task parameters
(Deixe em branco)
Parâmetros de tempo de execução opcionais
Etapa 6: Configure a aplicação
Em src/main/resources, crie o arquivo application.properties com as seguintes configurações:
server.port=18033
# SchedulerX connection settings
# Replace the placeholder values with your actual namespace and group credentials.
spring.schedulerx2.endpoint=acm.aliyun.com
spring.schedulerx2.namespace=<your-namespace-id>
spring.schedulerx2.groupId=<your-group-id>
spring.schedulerx2.appKey=<your-app-key>
Substitua os seguintes espaços reservados pelos seus valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
ID do namespace obtido no console do EDAS |
|
|
|
ID do grupo de tarefas agendadas |
Obtido na Etapa 5 |
|
|
Chave da aplicação para autenticação |
|
A região test usa cn-test como regionName. Durante testes locais, o tráfego passa pela Internet sem restrições de permissão.
Etapa 7: Execute e verifique localmente
Execute o método main em ScxApplication para iniciar o serviço.
Verifique a saída no console da sua IDE. Quando a tarefa for executada com sucesso, as seguintes mensagens serão impressas uma vez por minuto:
-----------Hello world---------------
---------IOC Success--------
Implantar no EDAS
Após a verificação local, implante a aplicação no EDAS sem modificar nenhum código ou configuração. O SchedulerX suporta migração transparente de um ambiente de desenvolvimento para o EDAS.
Escolha um destino de implantação com base na sua infraestrutura:
|
Destino de implantação |
Guia |
|
Cluster Kubernetes |
|
|
Cluster Elastic Compute Service (ECS) |
Após a implantação, gerencie e monitore suas tarefas agendadas diretamente no console do EDAS.
Implantar em regiões de produção
As etapas acima utilizam a região test para desenvolvimento e verificação. Para implantar em uma região de produção, como China (Hangzhou), adicione suas credenciais AccessKey ao arquivo application.properties:
spring.cloud.alicloud.access-key=<your-access-key-id>
spring.cloud.alicloud.secret-key=<your-access-key-secret>
Obtenha seu AccessKey ID e AccessKey secret na página Security Management.
Armazene as credenciais AccessKey com segurança. Evite confirmá-las no controle de versão. Use variáveis de ambiente ou um gerenciador de segredos em ambientes de produção.
Próximos passos
Depois de implantar a aplicação no EDAS, explore outros recursos do SchedulerX:
Configure outros tipos de tarefa além da Simple Job Single-instance Edition.
Defina modelos de execução distribuída, como MapReduce, para executar cargas de trabalho paralelas em várias instâncias.