[rabbitmq-discuss] [RabbitMQ-c] Question about amqp_listen example

Roberto Pagliari roberto at canary.is
Fri Jan 17 00:51:35 GMT 2014

I have a couple of questions about the overall functioning of Rabbitmq-c.

>From amqp_listen.c I see the following code:

    while (1) {
      amqp_rpc_reply_t res;
      amqp_envelope_t envelope;


      res = amqp_consume_message(conn, &envelope, NULL, 0);

      if (AMQP_RESPONSE_NORMAL != res.reply_type) {

      printf("Delivery %u, exchange %.*s routingkey %.*s\n",
             (unsigned) envelope.delivery_tag,
             (int) envelope.exchange.len, (char *) envelope.exchange.bytes,
             (int) envelope.routing_key.len, (char *)

      if (envelope.message.properties._flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {
        printf("Content-type: %.*s\n",
               (int) envelope.message.properties.content_type.len,
               (char *) envelope.message.properties.content_type.bytes);


First off, the output I'm getting when sending the string "Hello world" is
$ ./amqp_listen localhost 5672 amq.direct test
Delivery 1, exchange amq.direct routingkey test
Content-type: text/plain

1) Is that what the output should be like? I though it was supposed to
print out the string sent with amqp_sendstring on the other side.
2) In the code above, it looks like the printf is performed every time,
regardless of weather a message has been received or not. However, only
when a message is actually received, the printf will execute. Could someone
explain me why this is the case?

Thank you,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20140116/62a0b664/attachment.html>

More information about the rabbitmq-discuss mailing list