From 9b168776fb0b4096492e676d58b1645ddfff2f91 Mon Sep 17 00:00:00 2001 From: Alan Antonuk Date: Sun, 25 Aug 2013 23:50:12 -0700 Subject: Add amqp_basic_nack() API function --- librabbitmq/amqp.h | 24 ++++++++++++++++++++++++ librabbitmq/amqp_api.c | 11 +++++++++++ 2 files changed, 35 insertions(+) (limited to 'librabbitmq') diff --git a/librabbitmq/amqp.h b/librabbitmq/amqp.h index 533f8ec..1f5d2da 100644 --- a/librabbitmq/amqp.h +++ b/librabbitmq/amqp.h @@ -1927,6 +1927,30 @@ int AMQP_CALL amqp_basic_reject(amqp_connection_state_t state, amqp_channel_t channel, uint64_t delivery_tag, amqp_boolean_t requeue); +/** + * Do a basic.nack + * + * Actively reject a message, this has the same effect as amqp_basic_reject() + * however, amqp_basic_nack() can negatively acknowledge multiple messages with + * one call much like amqp_basic_ack() can acknowledge mutliple messages with + * one call. + * + * \param [in] state the connection object + * \param [in] channel the channel identifier + * \param [in] delivery_tag the delivery tag of the message to reject + * \param [in] multiple if set to 1 negatively acknowledge all unacknowledged + * messages on this channel. + * \param [in] requeue indicate to the broker whether it should requeue the + * message or dead-letter it. + * \return AMQP_STATUS_OK on success, an amqp_status_enum value otherwise. + * + * \since v0.5.0 + */ +AMQP_PUBLIC_FUNCTION +int +AMQP_CALL amqp_basic_nack(amqp_connection_state_t state, amqp_channel_t channel, + uint64_t delivery_tag, amqp_boolean_t multiple, + amqp_boolean_t requeue); /** * Check to see if there is data left in the receive buffer * diff --git a/librabbitmq/amqp_api.c b/librabbitmq/amqp_api.c index 2f40681..1dd303e 100644 --- a/librabbitmq/amqp_api.c +++ b/librabbitmq/amqp_api.c @@ -327,3 +327,14 @@ int amqp_basic_reject(amqp_connection_state_t state, req.requeue = requeue; return amqp_send_method(state, channel, AMQP_BASIC_REJECT_METHOD, &req); } + +int amqp_basic_nack(amqp_connection_state_t state, amqp_channel_t channel, + uint64_t delivery_tag, amqp_boolean_t multiple, + amqp_boolean_t requeue) +{ + amqp_basic_nack_t req; + req.delivery_tag = delivery_tag; + req.multiple = multiple; + req.requeue = requeue; + return amqp_send_method(state, channel, AMQP_BASIC_NACK_METHOD, &req); +} -- cgit v1.2.1