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

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

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

添加一个队列

建立绑定规则

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

尝试发送一次消息

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

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

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

RabbitMQ 信息结构

rabbitmq.h

#include

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

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

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消息。通过这个库,你可以轻松地实现可靠的消息通信,使你的应用程序更加灵活和可扩展。

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: