Robert Greig wrote:
> 
> 
> No, the JMS specification does not mandate this.
> 
> However I agree this is annoying (it is a result of the behaviour of
> the underlying AMQP protocol version implemented by Qpid M2, since
> publish is not a synchronous operation). I believe that the later
> version of the protocol can support proper guaranteed delivery without
> requiring transactions - maybe someone who worked on the M3 Java
> client can let us know whether it supports both modes?
> 
> RG
> 
> 

Thanks Robert for your quick reply.

Although I have to disagree with your interpretation of the JMS 1.1 spec.

Section 4.10 of the spec states:

"Most clients should use producers that produce PERSISTENT messages. This
insures once-and-only-once message delivery for messages delivered from a
queue or a durable subscription."

Once and once delivery means if the server fails no persistent messages can
be lost.

After the call to send() has returned the user should be guaranteed of once
and only once delivery since they are using persistent messages.

However if you send asynchronously, then there is a window between the call
to send() returning and the messaging actually being persisted, during which
if the server fails, the message will be lost.

If a user has no way of guaranteeing that a message ever gets to the queue
then it has no way of ensuring once and only once
-- 
View this message in context: 
http://www.nabble.com/Persistent-messages-sent-non-blocking-tp17517786p17518228.html
Sent from the Qpid Developers mailing list archive at Nabble.com.

Reply via email to