Bom dia Danillo, tem como vc fazer isso em groovy sim , mas na minha opinião vc deveria usar um ferramenta que faz bem esse tipo de integração como o framework apache camel o site dele é http://camel.apache.org/, com e este framework vc vai consegui fazer essas integrações alem de conseguir fazer isso usando boas praticas
E com esse apache camel ele cria um serviço dentro do meu sistema ou tenho que desenvolver algo a parte para isso?
o apache camel so usei em java e não sei como ele vai se comporta no grails, mas ele deve ter um plugin para grails
Tudo e feito dentro da sua aplicação.. o Spring Task e um recurso do spring que já vem incluso no grails basta você configurar e usa
Weibe,
Bacana, vou fazer alguns testes aqui. Muito obrigado pela ajuda!
Muito bacana a solução pelo Spring Tasks Weibe!
Outra alternativa é usar o plug-in Quartz, mas tem a desvantagem de que você precisaria instalá-lo em sua aplicação, razão pela qual a solução do Spring Tasks é melhor
Mas qual vocês acham que seria a mais fácil de implementar?
A Spring Tasks ou a Quartz??
Sem sombra de dúvidas Spring Tasks, pois você não precisará se preocupar com dependências adicionais no seu projeto.
Danilo, concordo com o Kico sobre a escolha do Spring Tasks se tratando de simplicidade e facilidade na implementação, agora alguns detalhes você tem que tomar cuidado por exemplo se você tiver um exception em tempo de execução não tratada sua task vai simplesmente parar de funcionar.. o spring não se recupera, diferente de um job usando quartz. Outro ponto e a possibilidade de você fazer essa integração fora da sua aplicação grails, você pode criar um jar e fazer sua implementação usando Executors ou Thread mesmo, a vantagem e que se precisar de para e fazer uma atualização na sua task você vai parar somente seu jar nao a sua aplicação grails.
Weibe,
Eu já fiz um projeto onde precisei fazer uma tarefa parecida e fiz um .jar separado para essa função. E realmente eu já tive que modificar o mesmo varias e varias vezes.. Mas eu fiz um while infinito para ficar olhando para o diretório, mas eu coloquei um Time apenas para percorrer a cada 5 segundos. Ele está rodando de boa, já faz alguns meses que não da problema, talvez não seja a melhor forma de fazer isso, mas o importante é que esta funcionando hahaha...
Obrigado pela ajuda!
A ideia do Weibe de ter um processo indepentente para o processamento em lote é muito boa: costumo fazer isto em meus projetos.
Recentemente precisei fazer algo com monitoramento de diretorios, mas em pascal (Lazarus), neste caso usei as apis do Windows, com a vantagem de que a aplicação era notificada instantaneamente, com overhead mínimo.
Em Java/Grails daria para acessar isso, mas usando JNI. E, claro, criaria uma dependencia com um sistema operacional, o que pode ou não ser um problema.
Se o sistema operacional for windows, para rodar a aplicação (seja um jar standalone, ou um webapp) como serviço pode usar o projeto WinSW. Tenho um projeto em graisl que roda como serviço no Windows através desse carinha