[ 
https://issues.apache.org/jira/browse/QPID-1677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12676358#action_12676358
 ] 

Rajith Attapattu commented on QPID-1677:
----------------------------------------

Appologies for not making my comment clear.
Certainly agree that the JMS spec implies that send() should be synchronous in 
AMQP terms for PERSISTENT messages and we do have the system/connection URL 
prop sync_persistence for this.
What I intended to say was about transient messages and that synchronous 
publish for transient messages could help in avoiding duplicates allthough it 
doesn't eliminate it completely during a broker failover. For that you would 
need an idempotency barrier built into the client.

In the description I incorrectly used the definition for AUTO_ACK as a 
justification to introduce the sync_publish. It is in that context I mentioned 
"Also the spec does not say anything about the publish side".  If an 
idempotency barrier is built in the client then the publish side does not have 
to synchronously publish to achieve exactly-once either. So my justification 
for sync_publish was wrong.

On a separate note, JMS does not require to provide exactly-once semantics, it 
allows the last consumed message to be duplicated.
But in our current implementation there could be two duplicate messages for a 
single producer/consumer pair even when using synchronous publishing and 
synchronous acking on the consumer side.

> Provide the ability to publish synchronously
> --------------------------------------------
>
>                 Key: QPID-1677
>                 URL: https://issues.apache.org/jira/browse/QPID-1677
>             Project: Qpid
>          Issue Type: Improvement
>          Components: Java Client
>    Affects Versions: M4
>            Reporter: Rajith Attapattu
>            Assignee: Rajith Attapattu
>             Fix For: M5
>
>
> In order for the producer to not replay the messages again (during failover) 
> and prevent duplicates,we need a way for the JMS client to sync on every 
> publish. 
> To faciliate this, I have propose a System/Connection URLproperty called 
> sync_publish={persistent|all} which supercedes sync_persistent.
> (sync_persistent is deprecated but supported for a few releases with a 
> warning printed if used).
> In order to provide exactly-once semantics between a single JMS 
> publisher-consumer pair (when using AUTO_ACK on the consumer) we need to 
> publish synchronously and ack synchronously (QPID-1106).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to