Edit report at https://bugs.php.net/bug.php?id=59877&edit=1

 ID:                 59877
 Updated by:         pdezw...@php.net
 Reported by:        luke at lukelanchester dot com
 Summary:            AMQP_NOACK on AMQPQueue::get not respected
-Status:             Open
+Status:             Closed
 Type:               Bug
 Package:            amqp
 Operating System:   OS X 10.6.2
 PHP Version:        5.3.2
-Assigned To:        
+Assigned To:        pdezwart
 Block user comment: N
 Private report:     N

 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

This is actually the expected behavior. Providing the AMQP_NOACK flag indicates 
that you will not be ack'ing the message, and that the server should instead 
ack it as soon as it sends it off to the client. Unfortunately, there is a bug 
in that you cannot get/consume without acking. This will be fixed in trunk 
shortly and be part of the 0.4.* release.


Previous Comments:
------------------------------------------------------------------------
[2011-10-11 06:13:42] php at aotd dot ru

It's not a bug, but normal situation.
$q->get(AMQP_NOACK) set NOACK flag for message and it _skipped_ by next get() 
commands.
When you disconnect all unacknowledged messages drop this flag and can be 
fetched 
by get() again.

------------------------------------------------------------------------
[2011-09-28 04:43:53] qwaser at gmail dot com

Confirmed on PHP 5.3.5 and amqp 0.3.1

------------------------------------------------------------------------
[2011-08-01 07:33:43] luke at lukelanchester dot com

Description:
------------
When using AMQPQueue to read messages, it reads messages 
correctly. However, using the AMQP_NOACK flag seems to have no 
effect as messages are still being acknowledged. It appears 
others have experienced this as well (search StackOverflow).

Reproduce code:
---------------
<?php

// Example borrowed from http://www.php.net/manual/en/amqp.examples.php#104117

$exchangeName = 'myexchange';
$routingKey = 'routing.key';
$queueName = 'myqueue';

// connect
$connection = new AMQPConnection();
$connection->connect();

// setup our queue
$q = new AMQPQueue($connection);
$q->declare($queueName);

// Bind it on the exchange to routing.key
$q->bind($exchangeName, $routingKey);

// show the message
print_r($q->get(AMQP_NOACK));

// Should return same message in theory
print_r($q->get(AMQP_NOACK));

$connection->disconnect();

Expected result:
----------------
Same message returned as previous get() not acknowledged

Actual result:
--------------
The next message in the queue and queue count decremented by 
1.


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=59877&edit=1

Reply via email to