Tenho uma aplicação web com mailing 2000 registro. quando vou mandar esses email o servidor da pau.
eu estava fazendo assim, mais o servidor não consegue enviar todos os mailing, o mesmo da um erro de “out of memory”
//pego uma colecao de todos value object Mailing
List listMailing = getCollection();
for(int i =0; i < listMailing.size(); i++){
MailingValue value = (MailingValue) listMailing.get(i);
sendMail(value); //enviando o email
}
//retorna o seu fluxo normal
mas como eu disse o servidor não consegue alocar tantos objetos na memoria e toda vez que esse mailing era enviado o mesmo dava pau
dei um pequena melhorada no codigo e fiz assim, criei um atributo na tabela de mailing p/ armazenar o news Letter enviado, para fazer um busca menor e somente os mailing não enviado, com isso o codigo ficaria assim:
//pego uma colecao de 50 value object Mailing, sendo q não posso enviar o mesmo newLetter para o mesmo value ja enviado
List listMailing = getCollection("from MailingValue mailing where fkboletimeletronico<>"+ boletimValue.getPkBoletimEletronico() +",55);
for(int i =0; i < listMailing.size(); i++){
MailingValue value = (MailingValue) listMailing.get(i);
sendMail(value); //enviando o email
facade.save(value); //fazendo update no registro, p/ constar q o mesmo ja foi enviado
}
//ao final disso chamo a mesma pagina ate o termino do envio
if(listMailing.size() == 0)
//terminei de enviar todos, agora retorna o seu fluxo normal
ao termino do envio dos 50 mailing eu chamo a mesma pagina para terminar o processamento
mesmo assim a solução esta sobrecaregando o servidor, alguem tem uma receita magica para resolver esse tipo de problema?
Obrigado…