BT

Spring Batch 2.0 Com Particionamento de Tarefa e Configuração em Anotações

por Srini Penchikala , traduzido por Ricardo Almeida em 08 Mai 2009 |

A última versão do framework Spring Batch suporta particionamento de tarefa, remote chunking e configuração baseada em anotações. O time de desenvolvimento do Spring Batch recentemente liberou a versão 2.0 do framework batch. A nova versão também tem funcionalidades como suporte a Java 5 e execução não sequencial.

As novas funcionalidades nessa versão estão agrupadas em quatro categorias principais: suporte a Java 5, Execução não sequencial, escalabilidade e Anotações.

Suporte a Java 5:
A versão Spring Batch 2.0 suporta Java 5 generics e tipos parametrizados para permitir compilar controle de tempo para tipos seguros. Por exemplo, a interface ItemReader agora tem um método de leitura segura (typesafe).

Execução não sequencial:
Isso inclui três novas funcionalidades (condicional, pausa e execução paralela) para permitir que sequências de passos não lineares terminem mesmo que um dos passos da tarefa falhe. Execução adicional ajuda na ramificação da tarefa para um passo diferente baseado no ExitStatus do último. Isso inclui a habilidade de ramificar para um status FAILED, o que implica que um passo falho não termina uma tarefa. Execução de Pausa pode ser usada para parar e esperar por uma instrução explicita para processar. Isso é útil onde existe uma regra de negócio que força intervenções manuais para checar a validade de dados críticos de negócio. E a execução paralela de múltiplos passos, onde passos são independentes dos outros e o usuário pode especificar quais ramificações podem ser executadas em paralelo.

Escalabilidade:
A nova versão suporta execução paralela em múltiplos processos com duas abordagens: "remote chunking", e particionamento. Remote chunking é uma técnica para divisão de trabalho de um passo sem qualquer conhecimento explícito da estrutura do dado. Qualquer entrada pode ser separada dinamicamente sendo lida em um único processo e enviando a informação a um processo remoto. O processo remoto implementa um pattern listener, respondendo à requisição, processando uma informação e enviando uma resposta assíncrona. O transporte para a requisição e resposta tem que ser durável com garantia de entrega e um único consumidor, e aquelas funcionalidades são prontamente disponíveis com qualquer implementação JMS. Spring Batch está construindo a funcionalidade remote chunking no topo do Spring Integration, então isso é angóstico para uma implementação real de mensagem middleware.
Perticionamento é uma abordagem alternativa que em contraste depende de ter algum conhecimento da estrutura dos dados de entrada, como a faixa de chaves primárias, ou o nome de um arquivo a processar. A vantagem desse modelo é que os transformadores de cada elemento em uma partição pode atuar como se eles fossem um único passo em uma tarefa normal de Spring Batch. Eles não tem que implementar qualquer padrão especial, o que faz eles fácil de configurar e testar. Particionamento é mais escal´åvel que remote chunking porque não existe um estrangulamento de serialização decorrente da leitura de todos dados de entrada em um lugar. No Spring Batch 2.0 particionamento é suportado por duas interfaces: PartitionHandler e StepExecutionSplitter.

Configuração Baseada em Anotação:
Componentes Spring Batch como leitores, escritores, processadores, ouvintes pode agora ser configurados usando Anotações e plugados em um passo de uma tarefa. Esse é feito usando o XML namespace para Spring Batch.

Existe também algumas mudanças na área de monitoramento de aplicações que incluem a estatística para contagem de itens executados e não executados, separando contadores para itens totais lidos, processados e alterados em cada estágio. Para passos (ou pequenas tarefas) que não separa suas execuções em leitura, processado, alterado, é mais compreensivo do que necessitado, mas para a maioria dos casos de uso isso é mais apropriado do que apenas armazenar um contador geral.

SpringSource está planejando um produto Enterprise Batch que vai fornecer uma solução completa de particionamento e remote chunking, como um admin e conceito de agendamento. Seu futuro inclui o plano de adicionar uma dependência Spring 3.0 para Spring Batch 2.1 (enquanto mantém a opção de 2.5.6). Isso fornece as novas funcionalidades em particular na configuração de tarefas e passos usando "late binding" com Spring Expression Language (EL), o qual tem a mesma sintaxe no Spring Batch 2.0, mas tem mais funcionalidades é mais fexivel do que a versão corrente.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT