[ 
https://issues.apache.org/jira/browse/QPID-348?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Ritchie updated QPID-348:
--------------------------------

    Description: 
The problem is that messages are be prefetched (push) so when a 
rollback/recover is called this cache must be cleared or the messages will 
arrive out of order. 

We have to invalidate all the messages that have been sent to the client as we 
do not know which messages have been processed. TxRollback and Basic.Recover do 
not provide facilities to send this information. Perhaps an improvement would 
be to do this analysis and send back the last message id sent to the consumer 
so we can leave the cache intact. 

In our Java implementation this cache is a the "pre-receive Queue"  we also 
have a _synchronousQueue that is used to store messages that have been 
dispatched but not yet consumed by the consumer when they are using receive() 
rather than a message listener.


Both of these queues need to be purged to ensure that only have one copy of 
each message sent to the client.

  was:Details tbc


> Problems related to prefetching of messages
> -------------------------------------------
>
>                 Key: QPID-348
>                 URL: https://issues.apache.org/jira/browse/QPID-348
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>            Reporter: Marnie McCormack
>         Assigned To: Martin Ritchie
>
> The problem is that messages are be prefetched (push) so when a 
> rollback/recover is called this cache must be cleared or the messages will 
> arrive out of order. 
> We have to invalidate all the messages that have been sent to the client as 
> we do not know which messages have been processed. TxRollback and 
> Basic.Recover do not provide facilities to send this information. Perhaps an 
> improvement would be to do this analysis and send back the last message id 
> sent to the consumer so we can leave the cache intact. 
> In our Java implementation this cache is a the "pre-receive Queue"  we also 
> have a _synchronousQueue that is used to store messages that have been 
> dispatched but not yet consumed by the consumer when they are using receive() 
> rather than a message listener.
> Both of these queues need to be purged to ensure that only have one copy of 
> each message sent to the client.

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

Reply via email to