---
name: "amqp-consume"
section: "1"
platform: "linux"
package: "librabbitmq-c"
version: "0.16.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/amqp-consume"
---

# amqp-consume(1)

Consume messages from a queue on an AMQP server

## NAME

amqp-consume - Consume messages from a queue on an AMQP server

## SYNOPSIS

**amqp-consume** \[*OPTION*...\] {*command*} \[*args*...\]

## DESCRIPTION

**amqp-consume** consumes messages from a queue on an AMQP server. For each message that arrives, a receiving command is run, with the message body supplied to it on standard input.

**amqp-consume** can consume from an existing queue, or it can create a new queue. It can optionally bind the queue to an existing exchange.

By default, messages will be consumed with explicit acknowledgements. A message will only be acknowledged if the receiving command exits successfully (i.e. with an exit code of zero). The AMQP “no ack” mode (a.k.a. auto-ack mode) can be enable with the **-A** option.

## OPTIONS

**-q**, **--queue**=*queue name*

The name of the queue to consume messages from.

If the **--queue** option is omitted, the AMQP server will assign a unique name to the queue, and that server-assigned name will be dixsplayed on stderr; this case implies that an exclusive queue should be declared.

**-e**, **--exchange**=*exchange name*

Specifies that an exclusive queue should be declared, and bound to the given exchange. The specified exchange should already exist unless the **--exchange-type** option is used to request the creation of an exchange.

**-r**, **--routing-key**=*routing key*

The routing key for binding. If omitted, an empty routing key is assumed.

- **-d**, **--declare**

  Forces an exclusive queue to be declared, even when it otherwise would not be. That is, when a queue name is specified with the **--queue** option, but no binding to an exchange is requested with the **--exchange** option. Note: this option is deprecated and may be removed in a future version, use the **--exclusive** option to explicitly declare an exclusive queue.

- **-x**, **--exclusive**

  Declared queues are non-exclusive by default, this option forces declaration of exclusive queues.

**-A**, **--no-ack**=*routing key*

Enable “no ack” mode: The AMQP server will unconditionally acknowledge each message that is delivered, regardless of whether the target command exits successfully or not.

- **-c**, **--count**=*limit*

  Stop consuming after the given number of messages have been received.

- **-p**, **--prefetch-count**=*limit*

  Request the server to only send *limit* messages at a time.

  If any value was passed to **--count**, the value passed to **--prefetch-count** should be smaller than that, or otherwise it will be ignored.

  If **-A**/**--no-ack** is passed, this option has no effect.

## EXAMPLES

Consume messages from an existing queue “myqueue”, and output the message bodies on standard output via **cat**:

```
$ amqp-consume -q myqueue cat
```

Bind a new exclusive queue to an exchange “myexch”, and send each message body to the script myscript, automatically acknowledging them on the server:

```
$ amqp-consume -A -e myexch ./myscript
```

## SEE ALSO

[**librabbitmq-tools**(7)](/librabbitmq-tools/7.md) describes connection-related options common to all the RabbitMQ C Client tools.

## AUTHOR

**The RabbitMQ Team \<\<info@rabbitmq.com\>\>**
