Estou com algumas dúvidas a respeito do uso de MDB’s, pelo que eu entendi, eu deveria usar processamento assincrono quando tenho por exemplo, uma grande quantidade de inserções em um banco de dados, o cliente enviaria cada inserção por JMS ficando livre pra continuar seu trabalho sem aguardar resposta, a minha dúvida é a seguinte, como saberei que não ocorreu erro, ou caso tenha que fazer uma consulta logo após ter enviado uma mensagem de inserção é possível que eu não encontre o registro porque ele ainda está na fila do provider, como esse casos são tratados. Ou se estiver equivocado, alguem poderia me dar um exemplo prático.
Uso de MDB's
5 Respostas
Normalmente você nunca trabalha com um MDB “sozinho”; você tem um outro componente (uma consulta SQL boba, talvez) cuja função é checar para ver se o processamento batch foi bem sucedido, ou se ainda está em curso, ou se terminou com problemas.
É a mesma coisa que você faz quando manda um email com o seu currículo pro RH e fica telefonando pra eles para ver se o email chegou bem.
Basta um registro bobo em uma tabela para você poder ver isso, e dar uma mexida no processamento batch para que ele possa registrar nessa tabela se foi OK ou não.
MDBs são uteis para processamento assíncrono e serviços de mensageria em geral.
Contar com o processamento de uma mensagem JMS para processeguir quase sempre não é uma boa idéia.
Obrigado pelos comentários, mas então qual seria o cenário ideal para uso de JMS/MDB?
Eu diria que um chat é uma boa utilização de JMS.
Em contrapartida acho que você poderia usar AJAX para obter um processamento assincrono da maneira que você está querendo!
Até
Um exemplo mais ilustrativo pode ser descrito nessa situação atual.
Quando você criou esse tópico enviando uma mensagem para o guj, pergutando se alguém poderia tirar uma dúvida sua, você não poderia garantir quando seu tópico fosse respondido, a única coisa que você teria que fazer seria esperar, e a depender do tópico seria capaz de esperar eternamente ou então quando ocorresse uma outra ‘crash’ no servidor, isso por já terem dito aqui, ele ser Assynchronous.
Um outro cenário ilustrativo com Produtor / Consumidor, imagine que você tenha objetos produzindo, mas você não tem garantia de quando esses produtos serão consumidos.