-
1. Re: False negatives and jms
timfox Oct 15, 2007 5:28 PM (in response to sanne)If the call to send a persistent message to a persistent destination returns successfully with no exception, then you can be sure that the message was persisted.
However if the call doesn't return successfully e.g. if an exception is thrown, then you *can't be sure the message wasn't persisted*. Since the failure might have occurred after persisting the message but before writing the response to the caller.
So, yes you are correct. This is a common attribute of any RPC type call: You can't tell by the call not returning that the call didn't actually succeed. Whether it's a web services call, an HTTP get request, an ejb invocation the same applies.
The trick is to code your application so your operations are *idempotent* - i.e. they can be repeated without getting the system into an inconsistent state.
With a message system you can do this on the application level, by checking for duplicate messages, and discarding them if they arrive. -
2. Re: False negatives and jms
sanne Oct 15, 2007 5:46 PM (in response to sanne)Hi Tim,
Exactly! Thanks for your authorative reply.
Brgrds!
Sanne
p.s. no wishlist yet? -
3. Re: False negatives and jms
genman Oct 15, 2007 7:24 PM (in response to sanne)I was part of this conversation about a year ago:
http://jira.jboss.org/jira/browse/JBMESSAGING-604
But you can implement a pretty decent solution on the client side by generating your own unique business transaction ID and processing on the consumer side only if that transaction ID was never processed before. -
4. Re: False negatives and jms
timfox Oct 15, 2007 7:38 PM (in response to sanne)"genman" wrote:
But you can implement a pretty decent solution on the client side by generating your own unique business transaction ID and processing on the consumer side only if that transaction ID was never processed before.
Yes indeed.
Discarding duplicates is a very powerful solution that can often obviate the need for slow XA and still provide once and only once guarantees. -
5. Re: False negatives and jms
sanne Oct 16, 2007 4:56 AM (in response to sanne)Hi genman,
Yes. Providing business transation id's is an overall design principle.
It can also provice a means of determining cause and effect.
Thanks for that.
Brgrds,
Sanne