Na prática qual é a utilidade deles?
:oops: :oops: :oops: :oops: :oops:
Em qualquer servico onde voce tenha que trabalhar com mensagens e/ou processamento assincronos. Um exemplo pratico:
Numa bolsa de valores, um monte de corretoras faz operacoes o dia todo. Quando uma corretora faz uma operacao, voce nao precisa dar um retorno pra ela - basta dizer que a operacao foi colocada na bolsa com sucesso.
Nesse caso, basta montar uma fila de mensagens, e todas as corretoras publicam mensagens nessa fila. O servidor de aplicacoes gerencia essa fila sozinho, e sempre que uma mensagem chega, o metodo onMessage(Object message) do seu EJB MDB é chamado. Daí é só processar a mensagem
Processamento assincrono de mensagens. Ok isso não quer dizer nada.
Como o cv falou, faz sentido usar um MDB quando se tem uma tarefa que precisa ser executada, porêm não precisa ser agora e não existe interesse no resultado.
Na verdade, a coisa mais legal do processamento assincrono eh que as tarefas geralmente PRECISAM ser executadas o mais rapido possivel - e economizar o tempo de se retornar resultados e manter o cliente conectado enquanto isso salva preciosos recursos na maquina
Sim, voce pode usar MDB para fazer processamento de varias coisas de forma assincrona.
Porêm até onde eu lembro a especificação de JMS não inclui garantias de tempo.
De fato, a spec dos MDBs nem a spec da JMS define isso, mas todo bom servidor de mensageria (ou seja, os que custam +$10000) tem essa feature
Hmm
então agora é só esperarmos a odmg entrar na JSR sobre EJB e esperarmos a spec de real-time EJB. :twisted: :twisted: :twisted: :twisted: :twisted:
[quote=“louds”]Hmm
então agora é só esperarmos a odmg entrar na JSR sobre EJB e esperarmos a spec de real-time EJB. :twisted: :twisted: :twisted: :twisted: :twisted:[/quote]
Corram por suas vidas!
Por exemplo se eu tivesse um processamento em lote grande, por exemplo o fechamento do mês, e após esse processamento eu precisasse destes dados para gerar relatórios, o message bean é a melhor solução?
Provavelmente… processamento “em lote” geralmente nao eh mto legal de se fazer - melhor seria ir montando o fechamento aos pouquinhos o tempo todo, e so “finalizar” ele no fim do mes. Em ambos os casos, da pra bolar otimas solucoes usando MDBs e JMS.
Mas e se eu quisesse um processamento em lote uma única vez ao mês usando ejb’s qual seria a melhor solução?
MDBs seriam uma boa, mas ainda assim depende de diversos outros fatores, por exemplo, que tipo de processamento vc esta fazendo. Se for so mover um monte de registros em um banco de dados pra lah e pra cah, e fazer umas totalizacoes, eh uma otima ideia. Processamento de dados meteorologicos, em compensacao, nao daria certo