Primeiramente Nico, parabéns pelo excelente curso que você ministrou, fiz o curso de JMS seu tb e segue o mesmo padrão, são ótimos.
Com o decorrer do curso, comecei a pensar em 'n' maneiras de utilizar o Apache Camel e no momento estou envolvido em um projeto que acredito que seja possível a utilização deste framework. Gostaria da opinião sua e de mais pessoas que possam me falar se realmente é viável utilizar este framework para estes fins ou não.
O Cenário é o seguinte:
Preciso desenvolver uma aplicação em Java que deve rodar em filiais da empresa como um serviço do Windows, para a seguinte finalidade:
Preciso obter algumas informações do banco de dados de um software de terceiro que não poderá ser alterado. Porém eu tenho a senha e o usuário do banco de dados (MySQL) p/ que eu tenha acesso aos dados que preciso.
A aplicação que vou desenvolver, precisa obter periodicamente determinados dados do banco de dados (MySQL) da aplicação de terceiro e enviá-los para um Web Service REST.
Esta aplicação também deverá realizar uma auditoria no banco de dados da aplicação de terceiro.
Será necessário que eu envie também dados para o banco de dados das filiais.
E também envie e obtenha dados de uma chave USB (NetRockey4) de proteção de software que utilizamos para controlar o acesso a aplicação.
Pensei em utilizar o Apache Camel (rodando de forma local nas filiais), nesta aplicação que estou desenvolvendo. A utilização do Camel seria da seguinte maneira:
Buscar as informações no banco de dados da aplicação de terceiro, transformar esses dados em XML ou JSON e armazenar em uma determinada pasta.
Esses dados devem ser enviados para um webservice REST duas vezes ao dia. Vendo a documentação do Apache Camel, vi que ele tem o Quartz, com isso eu podia fazer periodicamente essas tarefas.
A parte de auditoria, como eu estou criando um xml dos dados que obtive no banco de dados, posso realizar uma analise e enviar para o webservice apenas os novos registros e atualizações.
A parte que eu devo enviar informações para banco de dados da filial. Pensei em colocar o Camel para verificar 1 vez ao dia por exemplo, determinado Endpoint e com isso verificar se as informações do banco de dados estão atualizadas. Caso contrário, ele acessa outro Endpoint, obtem um get e atualiza o banco de dados.
E utilizando a mesma estrategia, colocar o Camel para verificar outro Endpoint, onde ele obtem informações envie para a chave USB.
Será que é possivel fazer isso com o Apache Camel, ou estou viajando e provavelmente isso não vai dar certo?
Pois estou bastante inclinado a adicionar este framework para ele ser o middleware que irá controlar estes acessos.
Obrigado e desculpe o tamanho da mensagem.