[Resolvido] Jobs no Vraptor

Olá pessoa,

Eu criei um serviço ApplicationScoped para envio de email com TaskScheduler conforme post da documentação e tudo funciona perfeitamente.
Entretanto, percebi que quando a aplicação está distribuida ocorre duplicidade da importação das mensagens, porque tem dois servidores executando o serviço e incrivelmente os dois executam juntos, antes das mensagens serem consideradas importadas.

Gostaria de saber a melhor forma para não ocorrer esta duplicidade.

Existe um banco de dados de agendamentos e uma function que distribui as mensagens para a fila.
O serviço apenas executa a function que faz a distribuição e depois envia aos poucos as mensagens da fila.
O problema ocorre na execução da function.

[quote=denilsont]Olá pessoas,

Eu criei um serviço ApplicationScoped para envio de email com TaskScheduler conforme post da documentação e tudo funciona perfeitamente.
Entretanto, percebi que quando a aplicação está distribuida ocorre duplicidade da importação das mensagens, porque tem dois servidores executando o serviço e incrivelmente os dois executam juntos, antes das mensagens serem consideradas importadas.

Gostaria de saber a melhor forma para não ocorrer esta duplicidade.

Existe um banco de dados de agendamentos e uma function que distribui as mensagens para a fila.
O serviço apenas executa a function que faz a distribuição e depois envia aos poucos as mensagens da fila.
O problema ocorre na execução da function.[/quote]

vc tá com a app deployada em mais de um servidor, certo?

se o próprio servidor enfileira as mensagens, vc deveria desabilitar isso em um dos servidores, via config

Na verdade já tinha tido esta sugestão do nosso arquiteto, mas queria ter certeza se não tinha outra forma, pois é chato ter que configurar diferente por instancia.

Vlw mais uma vez.

o @ApplicationScoped é por servidor (na verdade por instancia da aplicação)

se vc precisa mesmo que esse componente seja único numa aplicação distribuida, suas opções são configurar um servidor só, ou usar um sistema de filas separada do servidor. Pode ser um sistema de mensageria (tipo ActiveMQ ou RabbitMQ) ou um sistema de filas (tipo o Redis)

Blz,

Vlw a dica, pois pode ser útil em outro job, mas vou fazer por config mesmo, porque este serviço não é muito pesado e não precisa ser escalado, ao menos não é esperado.