Melhor forma de enviar emails asincronos no EJB

0 respostas
G

Tenho uma aplicação com um módulo EJB standalone, sendo que essa aplicação possui clusters/load balance.

A situação na qual me deparei agora é que a aplicação precisa enviar emails em algumas situações, como por exemplo quando o usuário solicita um reset de senha, a mesma é enviada a ele por email. A regra do reset da senha está, obviamente, no módulo EJB, então temporariamente faço na mão grossa o envio de email usando o commons-email.

Enfim, por alguma razão o servidor de SMTP pode estar ocupado, e eu não queria deixar o EJB esperando o servidor, nem mesmo queria misturar coisas de envio de email dentro de um EJB. Não acho nada elegante ficar abrindo e fechando streams e afins dentro de um EJB. Então pergunto, o que vocês já fizeram em situações como essa?

Pensei inicialmente em criar uma fila JMS e enviar os emails para lá, então quando receber uma mensagem na fila uma outra aplicação iria ler a fila e enviar o email.

Outra abordagem que pensei foi de gravar em uma tabela e de x em x tempos ler a tabela e enviar emails. Porém o EJB-timer do EJB3 não funciona de modo standalone, ou seja, ele precisa ser invocado por um aplicação externa.

O que vocês acham?

Criado 24 de outubro de 2009
Respostas 0
Participantes 1