当前位置: 首页 > news >正文

Qt 使用QAMQP连接RabbitMQ

Qt 使用QAMQP连接RabbitMQ

  • 引言
  • 一、下载安装
  • 二、测试例程

引言

QAMQP(Qt AMQP Library)是一个基于Qt框架的AMQP(Advanced Message Queuing Protocol)客户端库,用于与消息代理(如RabbitMQ)进行交互。它提供Qt风格的API,支持信号与槽机制,适合在Qt应用程序中实现消息队列功能。RabbitMQ是一个开源的消息代理软件,实现了AMQP协议,用于在分布式系统中异步传递消息。

一、下载安装

QAMQP github主页:https://github.com/mbroadst/qamqp/tree/master
QAMQP gitee版,下载速度快(推荐):https://gitcode.com/gh_mirrors/qa/qamqp
RabbitMQ主页:https://www.rabbitmq.com/
Linux系统下安装RabbitMq超详细教程:https://blog.csdn.net/2401_82767224/article/details/139332828
Windows下安装RabbitMq,可参考Windows 安装以及配置Docker全流程 - Docker Toolbox

  • RabbitMQ安装教程有很多,建议直接使用Docker安装,较方便。
  • QAMQP更方便,直接下载源码编译即可。

二、测试例程

  • 直接使用QAMQPtutorials > helloworld > send,增加设置连接参数的代码:
m_client.setHost("192.168.99.100");
m_client.setPort(5672);
m_client.setUsername("guest");
m_client.setPassword("guest");
m_client.setVirtualHost("/");
m_client.connectToHost();

注:如果在Linux下运行Debug版本,记得修改pro文件linux: QAMQP_LIBS = -lqamqp,因为Linux下好像不支持后缀加d:QAMQP_LIBS = -lqamqpd(MinGW编译器)

  • 然后编译运行,打了个断点,测试效果如下,网页显示已连接:
    在这里插入图片描述 在这里插入图片描述
  • 运行完后,效果如下 (网页有相关显示):
    在这里插入图片描述
  • 完整源码如下,可直接替换send项目下的main.cpp
#include <QCoreApplication>
#include <QTimer>
#include <QDebug>#include "qamqpclient.h"
#include "qamqpexchange.h"
#include "qamqpqueue.h"class Sender : public QObject
{Q_OBJECT
public:Sender(QObject *parent = 0) : QObject(parent) {}public Q_SLOTS:void start() {connect(&m_client, SIGNAL(connected()), this, SLOT(clientConnected()));connect(&m_client, SIGNAL(disconnected()), qApp, SLOT(quit()));m_client.setHost("192.168.99.100");m_client.setPort(5672);m_client.setUsername("guest");m_client.setPassword("guest");m_client.setVirtualHost("/");m_client.connectToHost();}private Q_SLOTS:void clientConnected() {QAmqpQueue *queue = m_client.createQueue("hello");connect(queue, SIGNAL(declared()), this, SLOT(queueDeclared()));queue->declare();}void queueDeclared() {QAmqpQueue *queue = qobject_cast<QAmqpQueue*>(sender());if (!queue)return;QAmqpExchange *defaultExchange = m_client.createExchange();defaultExchange->publish("Hello World!", "hello");qDebug() << " [x] Sent 'Hello World!'";m_client.disconnectFromHost();}private:QAmqpClient m_client;};int main(int argc, char **argv)
{QCoreApplication app(argc, argv);Sender sender;sender.start();return app.exec();
}#include "main.moc"

Qt 中为什么有时候要在 cpp 文件的最后加上 #include “main.moc“:https://blog.csdn.net/qiangzi4646/article/details/146088756

http://www.dtcms.com/a/617696.html

相关文章:

  • 怎么写代码自己制作网站化妆品网站建设模板
  • 腾讯二面:如何保证MQ消息不丢失?重复消费如何保证幂等,本地消息表配合MQ实现最终一致性?
  • RocketMQ生产者多种API实战使用
  • UI设计公司审美积累|办公类软件界面设计巧思,效率与视觉的双重升级
  • 力扣1513——仅含 1 的子串数
  • Kali Linux 中对某(靶机)监控设备进行漏洞验证的完整流程(卧室监控学习)
  • 将LabelMe工具目标检测标注生成的json文件转换成COCO json格式
  • 什么是求解器?
  • 课后作业-2025年11月16号作业
  • C#面试题及详细答案120道(116-120)-- 综合应用
  • 【报错解决】宝塔nginx404
  • 生信数据分析流程自动化:Snakemake实战全攻略
  • 网站建设什么专业重庆品牌餐饮加盟网站建设
  • 数据库 搭建 网站泉州手机网站建设价格
  • 小米电脑管家 V5.2.0.207 新版分享,镜像链接更稳定,AI自动亮度上线,分布式文件开放使用
  • 深入理解 Vue 3 中的计算属性与侦听器:联系、区别及与函数的对比
  • 2.FPGA板卡通过电脑映射连接上网
  • RTCP包之SR和RR
  • 40 token
  • 如何在 Celestia 区块链上构建验证者节点的详细手册
  • Linux权限知识点
  • MySQL: 数据库读写分离与负载均衡的实现方式及深度分析
  • 红帽企业Linux:企业级开源操作系统领航者
  • 怎么做网站开发建一个电商平台多少钱
  • 人工智能技术- 语音语言- 05 GPT-4o 自然人机对话
  • HarmonyOS实用指南:harmonyos + 华为
  • 什么是Spring Boot 应用开发?
  • uniapp实现android/IOS消息推送
  • 汽车网站开发流程html5 网站开发软件
  • HarmonyOS:harmonyos从入门到落地