Job

Componente que fornece a estrutura para cadastro e envio de tarefas, conhecidas como Jobs.

Estrutura Geral

É possível criar tarefas e definir a forma que elas serão executadas através deste módulo do Jmine. É muito simples, para isto basta criar uma classe que implemente a interface serializável Job, execute é o seu método principal e recebe um contexto de execução, que fornecerá informações suficientes para sua tarefa.

Dispatchers

Para mandar o sistema tratar um Job, é necessário um dispatcher, ou seja, quem será responsável por enviar sua tarefa para uma fila ou por criar uma thread e executá-lo, dispatchers implementam a interface JobDispatcher. Basicamente, temos a estrutura abaixo:

../../_images/Estrutura_job.png

Por padrão já existem alguns tipos de dispatchers disponíveis para uso, são eles:

Dispatcher Sincronizado

Este dispatcher executa sua tarefa na mesma thread em que se encontra. É interessante usá-lo quando você precisa esperar o resultado da sua tarefa para poder dar prosseguimento no sistema.

Dispatcher por Thread

Simplesmente executa suas tarefas em um conjunto limitado de threads que ele fica responsável por criar. Quando você mandar executar mais tarefas do que threads disponíveis, elas serão enfileiradas para tal. Este dispatcher é o ideal para o momento do desenvolvimento. Você tem toda a estrutura funcionando, podendo testar e debugar seu domínio sem maiores problemas.

Dispatcher por Fila

Para usar este dispatcher é necessário usar MQs. Ele simplesmente colocará suas tarefas serializadas na fila, para que então possam ser requisitadas por algum MDB e ser executado. Este é, geralmente, o dispatcher usado em produção, com um ambiente em que várias máquinas fiquem processando essas mensagens.