c++创建rabbitmq消费者 监听model_1队列
时间: 2024-02-03 18:02:10 浏览: 151
要使用C++创建RabbitMQ消费者并监听model_1队列,可以使用RabbitMQ C++客户端库(AMQP-CPP)。
以下是一个简单的示例代码,可以连接到RabbitMQ服务器并监听队列:
```cpp
#include <iostream>
#include <amqpcpp.h>
#include <amqpcpp/libboostasio.h>
using namespace std;
int main()
{
// 创建一个事件循环对象
boost::asio::io_service service;
// 创建一个TCP连接对象
auto tcp = boost::make_shared<amqp::tcp_socket>(boost::ref(service));
// 连接到RabbitMQ服务器
amqp::connection connection(tcp, amqp::connection::make_plain("localhost", 5672));
// 创建一个信道
amqp::channel channel(&connection);
// 声明队列
channel.declareQueue("model_1", AMQP::durable);
// 绑定队列到默认交换机上
channel.bindQueue("", "model_1", "model_1");
// 创建一个消费者对象
auto consumer = channel.consume("model_1", AMQP::noack);
// 监听队列
for (;;) {
// 等待消息到达
auto message = consumer->pop();
// 打印消息内容
cout << "Received message: " << message->message() << endl;
// 手动确认消息
channel.ack(message);
}
return 0;
}
```
在这个示例代码中,我们首先创建一个事件循环对象,然后创建一个TCP连接对象并连接到RabbitMQ服务器。接着,我们创建一个信道并声明一个名为“model_1”的队列,并将其绑定到默认交换机上。然后,我们创建一个消费者对象并使用“consume”方法开始监听队列。最后,我们使用一个无限循环来等待消息到达,并在收到消息后手动确认消息。
需要注意的是,在RabbitMQ中,消费者默认是自动确认消息的。如果你想手动确认消息,需要在消费者创建时指定“noack”选项,并在消息处理完毕后调用“channel.ack”方法来手动确认消息。
阅读全文