轻松玩转消息通信:SimpleAmqpClient 和 RabbitMQ 在C++中的终极指南

Rabbmq服务端

安装

这里我使用docker安装rabbitmq服务端,没有安装的就先去看其他的博客安装rabbitmq或者docker

#拉取rabbitmq
docker pull rabbitmq:management
#运行rabbitmq,记得打开防火墙端口
docker run -d --hostname rabbitsrv --name rabbit -p 5672:5672 -p 15672:15672 -p 25672:25672 rabbitmq:management

访问网页后台管理页面

#http示例网址
127.0.0.1:15672

用户名和密码都是guest

image-20240302162600555

  • Direct exchange(直连交换机) 单播
  • Fanout exchange(扇型交换机) 广播
  • Topic exchange(主题交换机) 组播
  • Headers exchange(头交换机) 匹配

添加一个交换机,选择直连模式

image-20240302170420468

image-20240302170632381

添加一个队列

image-20240302170731961

image-20240302170824873

建立绑定规则

填写刚刚创建的my.queue队列,路由key我们输入key1

image-20240302171042610

image-20240302171206276

尝试发送一次消息

  1. 在exchanges界面中点击我们创建的交换机进入

image-20240302172149385

随后进入Queeus界面,点击我们创建的队列

image-20240302172249635

image-20240302172457414

rabbitmq客户端

简介

SimpleAmqpClient是一个C++库,旨在简化处理AMQP消息的过程。AMQP是一种用于消息传递的开放式标准协议,它允许不同应用程序之间的可靠通信。SimpleAmqpClient使得在C++应用程序中轻松实现AMQP消息处理变得简单。

先决条件

确保你的开发环境中已经安装了以下工具:

  • CMake 3.5+ 构建系统
  • Boost 1.47.0 或更新版本
  • 安装 RabbitMQ-C,你可以按照给定的步骤进行安装。
git clone https://github.com/alanxz/rabbitmq-c.git
cd rabbitmq-c
mkdir build && cd build
cmake ..
cmake --build .

安装 SimpleAmqpClient

在安装了 RabbitMQ-C 后,我们将使用 SimpleAmqpClient 进行 C++ 消息通信。请按照以下步骤安装 SimpleAmqpClient:

git clone https://github.com/alanxz/SimpleAmqpClient.git
cd SimpleAmqpClient
mkdir simpleamqpclient-build
cd simpleamqpclient-build
cmake ..
cmake --build .

在编译时,确保将 SimpleAmqpClient 链接到你的项目中。

示例代码

header only

#include <SimpleAmqpClient/SimpleAmqpClient.h>

RabbitMQ 信息结构

rabbitmq.h


#include <string>
struct RabbitMqInfo{
    std::string RabbitURL = "amqp://guest:guest@127.0.0.1:5672";
    std::string TransExchangeName = "my.direct";
    std::string TransQueueName = "my.queue";
    std::string TransRoutingKey = "key1";
};

生产者

#include "rabbitmq.h"
#include <SimpleAmqpClient/SimpleAmqpClient.h>
int main(){
    // 指定mq的一些信息
    RabbitMqInfo MqInfo;
    // 创建一条和mq的连接
    AmqpClient::Channel::ptr_t channel = AmqpClient::Channel::Create();
    // pause();
    // 创建消息
    AmqpClient::BasicMessage::ptr_t message = AmqpClient::BasicMessage::Create("Hello");
    // 发布消息
    channel->BasicPublish(MqInfo.TransExchangeName,MqInfo.TransRoutingKey,message);
}

消费者

#include "rabbitmq.h"
#include <SimpleAmqpClient/SimpleAmqpClient.h>
int main(){
    // 指定mq的一些信息
    RabbitMqInfo MqInfo;
    // 创建通道
    AmqpClient::Channel::ptr_t channel = AmqpClient::Channel::Create();
    // 指定获取一个从某一个队列中的消息
    channel->BasicConsume(MqInfo.TransQueueName);
	//信封,用来存储消息
    AmqpClient::Envelope::ptr_t envelope;
    //消费消息
    bool isNotTimeout = channel->BasicConsumeMessage(envelope,5000);
    if(isNotTimeout == false){
        fprintf(stderr,"timeout\n");
        return -1;
    }

    fprintf(stderr,"message = %s\n", envelope->Message()->Body().c_str());
    return 0;
}

结论

SimpleAmqpClient提供了一个简单而强大的方式来在C++应用程序中处理AMQP消息。通过这个库,你可以轻松地实现可靠的消息通信,使你的应用程序更加灵活和可扩展。

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在使用CI框架与RabbitMQ集成之前,需要确保已经安装并配置好了RabbitMQ服务器。 接下来,可以按照以下步骤来使用RabbitMQ: 1. 安装RabbitMQ的PHP扩展包。可以使用Composer工具进行安装,命令为: ``` composer require php-amqplib/php-amqplib ``` 2. 在CI框架加载RabbitMQ的库文件。可以通过在config/autoload.php文件添加以下代码来实现: ``` $autoload['libraries'] = array('rabbitmq'); ``` 3. 配置RabbitMQ连接参数。可以通过在config/rabbitmq.php文件添加以下代码来实现: ``` $config['hostname'] = 'localhost'; $config['port'] = 5672; $config['username'] = 'guest'; $config['password'] = 'guest'; $config['vhost'] = '/'; ``` 4. 在CI框架使用RabbitMQ。可以使用以下代码来发送消息: ``` $this->load->library('rabbitmq'); $exchange = 'test-exchange'; $queue = 'test-queue'; $message = 'Hello, RabbitMQ!'; $this->rabbitmq->send($exchange, $queue, $message); ``` 可以使用以下代码来接收消息: ``` $this->load->library('rabbitmq'); $exchange = 'test-exchange'; $queue = 'test-queue'; $callback = function ($message) { echo 'Received message: ' . $message->body . PHP_EOL; }; $this->rabbitmq->consume($exchange, $queue, $callback); ``` 在以上代码,$exchange表示交换机名称,$queue表示队列名称,$message表示要发送的消息内容,$callback表示接收到消息后的回调函数。 注意,在实际使用,需要根据实际情况进行修改配置参数和代码逻辑。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@马云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值