simpleamqpclient配置和使用教程

rabbitmq是一个常见的消息中间件,但是大多数人都是用java来是实现消息的收发,使用c++的人则极少,所以我现在来把配置和使用simpleamqpclient的方式分享出去。

simpleamqpclient的配置需要两个依赖项,分别是rabbitmq-c和boost,还需要cmake和对应版本的visual studio,以下是配置方法,

注意,在以下的配置中,版本一定要对应上,x64或x86,release或debug

我把生成好的simpleamqpclient的dll和依赖放在百度网盘里了,在vs里配置上头文件,dll和lib就能直接用

通过百度网盘分享的文件:simpleamqpclient.rar
链接:https://pan.baidu.com/s/1ZGpjNI1f70dtP6DaMv9Qtw?pwd=asdf 
提取码:asdf

simpleamqpclient配置教程

一.配置rabbitmq-c

1.下载rabbitmq-c

我下载的是最新版,v0.14.0,可以通过这个链接下载

https://github.com/alanxz/rabbitmq-c/archive/refs/tags/v0.14.0.zip

2.配置rabbitmq-c

打开cmake,点configure,不需要ssl就把这个ssl关了,需要就自己配置,然后点generate就行

4bb733d67f11428e9d8e02fda8d034df.png

3.生成dll

打开build里的rabbitmq-c.sln,右键点击解决方案里的rabbitmq,然后点击生成就行

二.配置boost

1.下载boost

我下载的是1.78版本,必须下载1.54版本以上的boost,不然不兼容

Releases · alanxz/rabbitmq-c (boost.org)

2.生成boost的dll

先解压缩,然后点击bootstrap.bat​,会生成b2.exe,在命令行中运行 b2.exe --build-type=complete 即可,需要等待几十分钟

三.配置simpleamqpclient

1.下载simpleamqpclient

我下载的是最新版https://github.com/alanxz/SimpleAmqpClient/archive/refs/tags/v2.5.1.zip

2.配置cmake,按照这个来配置就行

479f2ef4507249d68ba0cc708b28183c.png

3.生成dll

打开build里的SimpleAmqpClient.sln,右键点击解决方案里的SimpleAmqpClient,然后点击生成就行。这样我们就生成了dll,把dll,lib,头文件都配置到我们需要的项目里就可以使用了。

simpleamqpclient使用教程

1. 连接到 RabbitMQ 服务器

SimpleAmqpClient 的核心类 Channel 用于管理与 RabbitMQ 的连接。可以通过 Channel::Create 方法创建连接。


    AmqpClient::Channel::ptr_t channel = AmqpClient::Channel::Create(

        "localhost",  // RabbitMQ 主机名

        5672,         // RabbitMQ 端口

        "guest",      // 用户名

        "guest",      // 密码

        "/"           // 虚拟主机

);

2. 声明队列

声明队列是 RabbitMQ 中最基础的操作之一。使用 Channel::DeclareQueue 方法来声明一个队列。

// 声明一个名为 "test_queue" 的队列

std::string queue_name = "test_queue";

channel->DeclareQueue(queue_name, passive, durable, exclusive, auto_delete);

  queue_name (std::string)

  • 作用: 指定队列的名称。如果传递空字符串,RabbitMQ 会为你生成一个随机名称的队列。

  passive (bool)

  • 作用: 指定队列声明的模式是否为被动模式。
  • true: 如果队列不存在,则返回一个错误,不会创建队列。常用于检查队列是否已经存在。
  • false: 如果队列不存在,则创建队列。

  durable (bool)

  • 作用: 指定队列是否持久化。
  • true: 持久化队列。RabbitMQ 会将队列的信息存储在磁盘上,即使服务器重启后队列仍然存在。
  • false: 非持久化队列。服务器重启后队列将被删除。

  exclusive (bool)

  • 作用: 指定队列是否为排他性队列。
  • true: 排他性队列。只能由声明它的连接使用,声明它的连接关闭后,队列会自动删除。通常用于临时队列。
  • false: 非排他性队列。可以被多个连接共享使用。

  auto_delete (bool)

  • 作用: 指定队列是否在没有消费者时自动删除。
  • true: 自动删除队列。当最后一个消费者断开连接后,队列会被删除。
  • false: 队列不会自动删除,即使没有消费者。

3. 声明交换机

交换机负责将消息路由到一个或多个队列中。使用 Channel::DeclareExchange 方法声明一个交换机。

// 声明一个名为 "test_exchange" 的直连交换机

std::string exchange_name = "test_exchange";

channel->DeclareExchange(exchange_name,”direct”);//直连模式

channel->DeclareExchange(exchange_name,”fanout”);//扇出模式

channel->DeclareExchange(exchange_name,”topic”);//主题模式

4. 绑定队列到交换机

通过 Channel::BindQueue 方法将队列绑定到交换机,并指定路由键。

std::string routing_key = "test_key";

channel->BindQueue(queue_name, exchange_name, routing_key);

5. 发布消息

发布消息是将消息发送到交换机,通过 Channel::BasicPublish 方法实现。

// 创建消息对象

std::string message_body = "Hello, RabbitMQ!";

AmqpClient::BasicMessage::ptr_t message = AmqpClient::BasicMessage::Create(message_body);

// 发布消息到交换机

channel->BasicPublish(exchange_name, routing_key, message);

6. 消费消息

消费消息是从队列中读取消息,可以使用 Channel::BasicConsume 开始消费,并通过 Channel::BasicConsumeMessage 获取消息。

// 开始消费消息

std::string consumer_tag = channel->BasicConsume(queue_name);

// 接收消息

AmqpClient::Envelope::ptr_t envelope = channel->BasicConsumeMessage(consumer_tag);

std::cout << "Received message: " << envelope->Message()->Body() << std::endl;

// 确认消息

channel->BasicAck(envelope);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值