rabbitmq C语言 循环接收消息amqp_consume_message
时间: 2024-05-13 16:15:00 浏览: 256
rabbitMq消息接收与消费
在 RabbitMQ 的 C 语言客户端中,可以通过 `amqp_consume_message` 函数循环接收消息。以下是一个简单的示例代码:
```
amqp_rpc_reply_t reply;
amqp_envelope_t envelope;
while(1) {
// 接收消息
reply = amqp_consume_message(conn, &envelope, NULL, 0);
// 如果接收成功
if (reply.reply_type == AMQP_RESPONSE_NORMAL) {
// 处理消息
printf("Received message: %.*s\n", (int)envelope.message.body.len, (char *)envelope.message.body.bytes);
// 释放消息内存
amqp_destroy_envelope(&envelope);
} else {
// 如果接收失败,则退出循环
break;
}
}
```
在上面的示例代码中,`conn` 是一个已经连接到 RabbitMQ 的 AMQP 连接对象。`amqp_consume_message` 函数会一直阻塞直到接收到消息,然后返回一个 `amqp_rpc_reply_t` 结构体。如果接收到消息,`reply.reply_type` 的值为 `AMQP_RESPONSE_NORMAL`,将消息内容从 `envelope.message.body.bytes` 中取出即可。在处理完消息后,需要调用 `amqp_destroy_envelope` 函数释放消息内存。如果 `amqp_consume_message` 函数返回值的 `reply_type` 不为 `AMQP_RESPONSE_NORMAL`,则表示接收失败,可以退出循环。
阅读全文