[ 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