CLuster JBoss + Quartz

Ola galera,

estou com um problema, que gostaria muito de contar com a ajuda de voces…

Desenvolvi no trabalho uma aplicação, que após pronta e entregue descobrimos que rodaria em um servidor JBoss que utilza cluster.
Essa aplicação tem um módulo que trabalha como o framework Quartz.
Esse módulo envia emails todos os dias as 6 hrs da manha.
Com mais detalhes: o módulo está preparado para que todos os dias as 6 da manha faça uma busca no banco e encontre os emails que devem ser enviados. Ele busca os destinatários do email, a mensagem em si, o assunto, monta uma planilha excel a partir desses dados, anexa-a ao email e envia-os.
Testei tudo direitinho, funcionando perfeitamente, até que o deploy foi feito no servidor do cliente (cluster).
O problema que acontece é que está duplicando os emails. Se a consulta traz 50 emails para enviar, ele envia 100…
Dessa forma a única explicação que encontrei para o problema é que duas instâncias, do módulo que utiliza o Quartz, estão sendo criadas e disparando ao mesmo tempo.

Para dar ainda mais detalhes, após o envio de cada email o sistema faz um update nas linhas com dados que foram enviados, indicando que na próxima execução não precisará enviá-los novamente, e ao final do envio de todos os emails ele comita.

Na tentativa de me livrar desse problema, passei a utilizar na consulta um SELECT … FOR UPDATE, para dessa forma bloquear a tabela, para que a outra instância do módulo espere até que a primeira execute, para só depois obter os dados (já atualizados pelo update) e assim não duplicar o envio, porém essa abordagem não deu certo.

Gostaria de contar com a ajuda de vocês para tentar resolver esse problema.

Pesquisando, encontrei essa página, mas nao sei se seria a solução para o meu problema, vou tentar montar aqui na minha máquina um cluster para testar…

http://architecture-journal.blogspot.com/2007/07/usando-clustering-no-jboss-para-ejb-30.html

Se alguém puder dar uma força, ficarei muito agradecido, porque já não estou encontrando mais opções para resolver esse problema…

Adicione no seu quartz.properties

org.quartz.scheduler.instanceName = MyClusteredScheduler
org.quartz.scheduler.instanceId = AUTO

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
org.quartz.jobStore.acquireTriggersWithinLock=true

Onde vc colocou o quartz.properties ?
Como informou ao conteiner para verificar este arquivo de propriedades.

Grato