[ http://issues.apache.org/jira/browse/QPID-16?page=all ]

Steven Shaw resolved QPID-16.
-----------------------------

    Resolution: Fixed

Removed unnecessary requeue operations. 

> Requeuing a message when the message is sent appears to be unnecessary
> ----------------------------------------------------------------------
>
>                 Key: QPID-16
>                 URL: http://issues.apache.org/jira/browse/QPID-16
>             Project: Qpid
>          Issue Type: Improvement
>            Reporter: Steven Shaw
>
> Consider the following code in AMQMessage.requeueImpl():
>             _store.dequeueMessage(queue.getName(), _messageId);
>             _store.enqueueMessage(queue.getName(), _messageId);
> We felt that it made sense because it "puts the message to the back of the 
> queue" (and that perhaps if the queue on disk is sort or sorted when loaded 
> then the message order is preserved). We also agreed that this was necessary 
> because when a message is sent to a NO_ACK consumer, the message is 
> "dequeued" and that can only be deleted from the end of the queue (i.e. 
> popped).
> However, we were wrong on most counts.
> When you look at the implementation of AMQMessage.dequeue:
>             _store.dequeueMessage(queue.getName(), _messageId);
>  we see that it is able to use the messageId of the message to delete a 
> message "inside" the queue (i.e. not on the end). There is no requirement to 
> pop it off one end! 
> This means that the dequeue and enqueue are not necessary.
> Also, it appears that the deliveryDb (the queueName->messageId persistent 
> map) is sorted so when these messages are loaded back in at server startup, 
> the message order is preserved (as it's ordered by queueName, messageId). As 
> far as I can see, messageId does guantee the ordering. The AMQMessage 
> contructor calls store.getNewMessageId() to get the next one.
> It appears that AMQMessage.requeue is unnecessary as no other methods besides 
> SubscriptionImpl.send() use it.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to