Archive

Archive for novembro \30\UTC 2010

Como Executar Tarefas em Paralelo no JSF – Abordagem com Threads

Essa semana me deparei com um problema em um sistema desenvolvido em JSF aqui da UECE. Após o usuário clicar em um CommandButton para executar uma action, o sistema tinha que atualizar uma entidade no banco de dados e logo depois disparar uma boa quantidade de e-mails informativos – não precisam de confirmação se foram enviados com sucesso – diferentes (variando de 4 a mais de 100) e para vários destinatários. O detalhe era: como fazer para não deixar o usuário esperando o envio de mais de 100 mensagens? Qual a solução mais prática?

Algumas pessoas me sugeriram usar o Quartz com uma tarefa recorrente que ficaria verificando se havia mensagens para enviar em uma fila, mas seria mais um componente a ser colocado no sistema e nem todos os desenvolvedores do departamento saberiam usá-lo.

A solução muito simples que encontrei foi criar uma Thread separada, responsável por realizar a tarefa de enviar as mensagens. Assim, a execução do método no Managed Bean continuaria imediatamente após o disparo da Thread, independente de as mensagens terem sido enviadas ou não. Vamos aos códigos:

Leia mais