Hi,

I am neither an expert with ActiveMQ nor with JMS so what follows might be
inaccurate and the wording might not be the best, but I have been
experimenting with AMQ and I had needs that are a bit similar to yours.

When you use transaction, it is at the session level. So the consumers and
producers that you create through this session are all working in a
transaction mode.
For producers it means that messages that you send are not really sent to
the broker until you commit.
For consumers it means that the message received are not considered as
consumed on the broker side until you commit.
This page gives details about redelivery :
http://activemq.apache.org/message-redelivery-and-dlq-handling.html

So for your requirement, if the crash on the client side is correctly
handled (exception catched, the session is closed properly) then using
transaction will work as you expect, all the messages received until your
last commit will be redelivered to the consumer (and you can specify a
redelivery policy to discard messages that systematically fail on client
side).
However if the client crash is not properly handled(segfault, sigkill), the
message will  be redelivered, but it will not be considered as a redelivery
and the message is, from my experience, never moved to the dead letter
queue. I have posted a question about this here
(http://activemq.2283324.n4.nabble.com/Handling-client-crash-induced-by-a-message-td4674849.html)
because I find this behavior strange, so I might be misunderstanding
something here.

Hope this helps a bit.

Kind regards,
J.Stordeur



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Transactions-in-ActiveMQ-tp4674759p4674874.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to