写点什么

一个能在 Linux 下使用 C++ 编写的访问 RabbitMQ 接收发送数据的可编译代码

作者:linux大本营
  • 2023-04-24
    湖南
  • 本文字数:993 字

    阅读完需:约 3 分钟

以下是一个简单的使用 C++和 AMQP-CPP 库连接到 RabbitMQ 服务器并发送和接收消息的示例代码:


// 引入必要的头文件#include <iostream>#include <string>#include <amqpcpp.h>#include <amqpcpp/libboostasio.h>
// 定义连接信息const std::string conn_str = "amqp://username:password@host:port/vhost";
// 创建一个继承自AMQP::ConnectionHandler类并重写其方法的连接处理程序class MyConnectionHandler : public AMQP::ConnectionHandler {public: // 覆盖onData函数以处理收到数据的情况 virtual void onData(AMQP::Connection *connection, const char *data, size_t size) { // 解码消息 AMQP::Envelope envelope; if (envelope.decode(data, size)) { // 打印接收到的数据 std::cout << "Received message with routing key '" << envelope.routingkey() << "' on exchange '" << envelope.exchange() << "': " << envelope.message() << std::endl; } else { std::cerr << "Error decoding message" << std::endl; } }};
int main() { // 创建一个事件循环 boost::asio::io_service io_service;
// 创建一个新的连接 AMQP::TcpConnection connection(&io_service, AMQP::Address(conn_str));
// 设置一个连接处理程序 MyConnectionHandler handler; connection.setConnectionHandler(&handler);
// 创建一个通道 AMQP::TcpChannel channel(&connection);
// 声明一个交换机 channel.declareExchange("my_exchange", AMQP::fanout);
// 声明一个队列 channel.declareQueue("my_queue");
// 将队列绑定到交换机上 channel.bindQueue("my_exchange", "my_queue", "");
// 发布一条消息 std::string message = "Hello World!"; channel.publish("my_exchange", "", message);
// 启动事件循环 io_service.run();
return 0;}
复制代码


首先要在系统上安装 AMQP-CPP 库和 Boost.asio 库。然后在代码中定义连接信息和处理程序,创建连接和通道,声明一个交换机和队列,绑定队列到交换机,发布一条消息并启动事件循环。需要注意的是,对于本示例中的处理程序来说,正在等待事件循环处理传入的数据。请根据您的实际应用场景调整代码。


相关技术视频教程:c/c++ linux服务器开发/后台架构师免费学习地址

用户头像

还未添加个人签名 2020-11-26 加入

C/C++linux服务器开发群 812855908

评论

发布
暂无评论
一个能在Linux下使用C++编写的访问RabbitMQ接收发送数据的可编译代码_RabbitMQ_linux大本营_InfoQ写作社区