Pessoal,
Preciso criar uns processos assíncronos para geração de TXT, baseado no filtro desejado pelo usuário.
Pensei em disponibilizar a tela de filtro para o usuário, que após sua solicitação, colocaria uma mensagem na fila, para que um EJB MDB processasse a requisição.
Preciso, neste caso, manter o estado do processamento (a processar, processando, processado). Pensei em fazer isso usando uma tabela no BD. Existe alguma outra forma de se controlar isso?
Um outro problema que me ocorre, é o fato do servidor cair ou ser desligado. O JBoss, no caso, mantém essa lista de “a processar” e “processando”, para que quando ele retome, o servidor continue e retome os processamentos? Ou devo criar um agente que verifique em algum lugar os processos a serem processados ou reativados?
Valeu!
Outra coisa. Existe uma forma de se limitar o número de MDBs a serem executados ao mesmo tempo?
Fala Daniel beleza?
O meu problema foi bem parecido com o seu… Pesquisando nos foruns do jboss.org eu encontrei algumas referências de como configurar o numero de objetos de um pool de MDB, no caso eu queria que apenas um fosse criado.
Mesmo seguindo as dicas de configurações do jboss que encontrei, na pratica não dava certo. Acabei usando uma tabela mesmo.
Um das formas que encontrei foi alterar o <MaximumSize> no standardjboss.xml.
Tenta aí denovo…
<invoker-proxy-binding>
<name>message-driven-bean</name>
<invoker-mbean>default</invoker-mbean>
<proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory>
<proxy-factory-config>
<JMSProviderAdapterJNDI>DefaultJMSProvider</JMSProviderAdapterJNDI>
<ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI>
<MaximumSize>15</MaximumSize>
<MaxMessages>1</MaxMessages>
<MDBConfig>
<ReconnectIntervalSec>10</ReconnectIntervalSec>
<DLQConfig>
<DestinationQueue>queue/DLQ</DestinationQueue>
<MaxTimesRedelivered>10</MaxTimesRedelivered>
<TimeToLive>0</TimeToLive>
</DLQConfig>
</MDBConfig>
</proxy-factory-config>