Estado transacional JMS

1 resposta
fabianoboer

Boa tarde

Gostaria de saber o que seria o estado transacional em JMS e como ele funciona?Parece ser coisa simples, mas para eu que sou novato seria algo bem interessante…sei que setar a sessão para false ela nao se torna transacional e true ela se torna transacional, mais qual seria o significado disso? :?:

Um abraço a todos
e um grande pro LUCA que sempre me tira do sufoco
hehehehehe :lol:

1 Resposta

Luca

Olá

Fabiano, o que você perguntou é uma das coisas mais avançadas de JMS e se você ainda não está seguro no be-a-bá nem adianta ler o que está abaixo. Coloque transacted = false, estude mais e pule para a frase em negrito lá em baixo antes da minha assinatura.

Quando você tem uma Connection usa o método createSession para criar uma sessão.

Uma transação JMS é usada para tratar uma série de mensagens enviadas ou recebidas ou ainda uma combinação de mensagens enviadas e recebidas, como uma unidade atômica, desde que você tenha cuidado com a ordem das operações.

Veja o tópico Using JMS API Local Transactions do tutorial JEE 5 mas já sabe que este tutorial não é bem explicado.

O uso de transacted = true altera o cenário de entrega de mensagens para um modo não muito óbvio. Os comits e rollbacks trabalham em conjunto com os ACKs e são usados pelo provider para remover a mensagem previamente persistida.

Para tentar explicar com um diagrama, refiz um diagrama de seqüência da figura 4.19 do livro do Eric bruno que já recomendei para meio mundo aqui no GUJ e que anexei a esta resposta.

Passos no diagrama 2tx.jpg:
1 A msg é enviada pelo producer ao JMS provider
2 O JMS provider persiste msg
3 O JMS provider responde com ACK ao producer
4 O producer faz commit na transação que começou em 1
5 O provider JMS envia a msg para o consumer
6 O consumer responde com ACK dizendo que recebeu a msg
7 O consumer faz commit na transação que começou em 5
8 Agora que a transação do consumer comitou, msg é removido do armazenamento persistente.

Optando transacted = true em createSession a mensagem será persistida durante a transação

[]s
Luca

Criado 5 de dezembro de 2006
Ultima resposta 5 de dez. de 2006
Respostas 1
Participantes 2