On 21 October 2014 at 01:44:36, l rus (
zxto...@gmail.com) wrote:
> I assumed that with no-ack=1, the client library would internally
> send basic.ack to the server.
This assumption is not correct.
> >
> > When issuing a basic.consume, you explicitly pick which acknowledgement
> mode you want:
> > automatic or manual (client has to send basic.[n]ack).
>
> If not, what does "automatic ack" in rabbitmq-c client library
> do?
Tell RabbitMQ that this consumer will use automatic acknowledgement
mode and thus the server should not expect any acks from it.
> Since rabbitmq server expects an ack, i would need no-ack=0 and
> send amqp_basic_ack().
>
> for amqp_basic_ack(),
> - what is "multiple" used for?
To ack multiple messages with a single basic.ack method sent on the wire.
In other words, instead of acking a single delivery with delivery_tag = X,
it acks all unacknowledged deliveries with delivery tags up to X (inclusive).
Delivery tags grow monotonically, scoped by channel.
You must ack/nack on the same channel the delivery was received on.