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.
