RabbitMQ C++客户端 RabbitMQ Client for Windows/Linux 超简单接收发送接口-最近更新2018-02-28
2014-04-10 12:40
736 查看
消息队列设计精要
联系QQ 3508551694,该资源(本人整理制作,知识付费,请尊重劳动者的成果)。
关于服务端的安装与配置,请参考:Windows RabbitMQ服务端安装与配置详解
解耦是消息队列要解决的最本质问题。
所谓解耦,简单点讲就是一个事务,只关心核心的流程。而需要依赖其他系统但不那么重要的事情,有通知即可,无需等待结果。
消息队列的基本功能之一是进行广播。
如果下游有很多系统关心你的系统发出的通知的时候,果断地使用消息队列吧。
掰开了揉碎了看,最简单的消息队列可以做成一个消息转发器,把一次RPC做成两次RPC。发送者把消息投递到服务端,服务端再将消息转发一手到接收端,就是这么简单。
RabbitMQ是持久化的MQ。
随时更新rabbitmq-c最新版本!Debug | Release 版本!一个发送接口 一个接收接口 简单至极!
持续更新最新rabbitmq-c
最近更新:
2017-09-06 热心网友“『路遥』”修改了两种类型的内存泄漏
Windows VS2010
Linux (CentOS) g++
最新rabbitmq-c的源码编译生成的库文件
开发者可以直接使用CRabbitMQ类来解决上传下载,接口更方便好用
Windows下,rabbitmq-c-master中增加了用CMake生成的sln工程
2016-12-29
修改链接失败的内存泄漏问题
2016-07-03
添加全局变量err,及其获取函数GetErr()
Windows可以编译32位dll
Linux可以编译so
Windows运行效果:
Linux运行效果:
联系QQ 3508551694,该资源(本人整理制作,知识付费,请尊重劳动者的成果)。
关于服务端的安装与配置,请参考:Windows RabbitMQ服务端安装与配置详解
解耦是消息队列要解决的最本质问题。
所谓解耦,简单点讲就是一个事务,只关心核心的流程。而需要依赖其他系统但不那么重要的事情,有通知即可,无需等待结果。
消息队列的基本功能之一是进行广播。
如果下游有很多系统关心你的系统发出的通知的时候,果断地使用消息队列吧。
掰开了揉碎了看,最简单的消息队列可以做成一个消息转发器,把一次RPC做成两次RPC。发送者把消息投递到服务端,服务端再将消息转发一手到接收端,就是这么简单。
RabbitMQ是持久化的MQ。
随时更新rabbitmq-c最新版本!Debug | Release 版本!一个发送接口 一个接收接口 简单至极!
持续更新最新rabbitmq-c
最近更新:
2017-09-06 热心网友“『路遥』”修改了两种类型的内存泄漏
Windows VS2010
Linux (CentOS) g++
登录首页:
http://localhost:15672/ 如果是异地服务器,需要填写服务器的IP才能访问RabbitMQ服务器队列
全部资源
百度网盘最新rabbitmq-c的源码编译生成的库文件
开发者可以直接使用CRabbitMQ类来解决上传下载,接口更方便好用
升级日志
2017-02-05Windows下,rabbitmq-c-master中增加了用CMake生成的sln工程
2016-12-29
修改链接失败的内存泄漏问题
2016-07-03
添加全局变量err,及其获取函数GetErr()
Windows可以编译32位dll
Linux可以编译so
发送和接收的示例代码
#include <iostream> #include <string> #include <sstream> #include <vector> #include "MessageQueue/RabbitMQ.h" #include "MessageQueue/MessageBody.h" #include <ctime> using namespace std; //--------------------------需要开发者自己填写的信息begin-------------------------------------- //服务端的一个Exchange,客户端发送的时候,如果没有则会创建;客户端取的时候,如果没有则取不到数据 CExchange my_test_exchange("MyTestExchange"); //服务端的一个消息队列,客户端发送的时候,如果没有则会创建;客户端取的时候,如果没有则取不到数据 CQueue my_test_queue("MyTestQueue"); //服务端Exchange与消息队列之间的绑定key,客户端发送的时候,如果没有则不能发送;客户端取的时候,如果没有则取不到数据 string my_test_bind_key("MyTestBindKey"); //RabbitMQ服务端IP string rabbitmq_server_ip = "127.0.0.1"; //RabbitMQ服务端端口 int rabbitmq_server_port = 5672; //RabbitMQ服务端登录用户名 string rabbitmq_server_user = "guest"; //RabbitMQ服务端登录密码 string rabbitmq_server_psw = "guest"; //--------------------------需要开发者自己填写的信息end-------------------------------------- //--------------------------建议开发者设置批量操作begin-------------------------------------- //建议将此值设置成500,或者1000.这样可以节省时间和网络资源。没有必要一条一条的发送或者取 int test_send_number = 10; //--------------------------建议开发者设置批量操作end-------------------------------------- //引用全局变量 //发送数据到RabbitMQ服务的全部过程如下 void send_message_to_mq(void) { vector<CMessage> message_array; CMessage message(""); //制作test_send_number个消息,用于发送到RabbitMQ服务器 for (int i=0;i<test_send_number;++i) { ostringstream oss; oss<<i; //这里创建你要发送的数据,放到CMessage的m_data成员变量中,从服务端取的时候也是一样从这个成员中取string message.m_data = "Hello"+oss.str(); message_array.push_back(message); } string& err = GetErr(); //RabbitMQ服务器的连接信息,这里改成你自己的IP/PORT CRabbitMQ pro(rabbitmq_server_ip,rabbitmq_server_port,rabbitmq_server_user,rabbitmq_server_psw); if(pro.Connect(err)<0) { cout<<"连接失败!"<<endl; return ; } else { cout<<"连接成功!"<<endl; } //声明一个交换机,声明一次,下次不需要再次声明 if(pro.exchange_declare(my_test_exchange, err) < 0) { cout<<"声明交换机失败!"<<endl; return ; } else { cout<<"声明交换机成功!"<<endl; } //声明一个队列,声明一次,下次不需要再次声明 if( (pro.queue_declare(my_test_queue, err) < 0) ) { cout<<"声明队列失败!"<<endl; return ; } else { cout<<"声明队列成功!"<<endl; } //将交换机绑定到队列, 绑定一次,后面不需要再绑定 if( (pro.queue_bind(my_test_queue,my_test_exchange,my_test_bind_key, err)<0) ) { cout<<"绑定队列失败!"<<endl; return ; } else { cout<<"绑定队列成功!"<<endl; } string my_test_root_key=my_test_bind_key; //发送数据到RabbitMQ服务器,可以反复调用从而实现连续发送数据 int flag = pro.publish(message_array,my_test_root_key,err); if(flag<0) { cout<<"投递消息到MQ失败"<<endl; } else { cout<<"投递消息到MQ成功"<<endl; for (vector<CMessage>::iterator itr = message_array.begin(); itr != message_array.end(); ++itr) { cout<<"投递了:"<<(*itr).m_data<<endl; } } pro.__sleep(10); pro.Disconnect(); } //从RabbitMQ取数据的全部过程如下 void get_message_from_mq(void) { vector<CMessage> message_array; string& err = GetErr(); //RabbitMQ服务器的连接信息,这里改成你自己的IP/PORT CRabbitMQ pro(rabbitmq_server_ip,rabbitmq_server_port,rabbitmq_server_user,rabbitmq_server_psw); if(pro.Connect(err)<0) { cout<<"取消息时连接失败!"<<endl; return ; } else { cout<<"取消息时连接成功!"<<endl; } message_array.clear(); //一次性取1000個消息,不足1000也无妨,有多少取到多少 int get_number= test_send_number; ::timeval tvb={0,10}; //从RabbitMQ服务器取消息 if(pro.consumer(my_test_queue,message_array,get_number,&tvb,err)<0) { cout<<"取消息失败!"<<endl; } else { cout<<"取消息成功!取到了"<<message_array.size()<<"个消息"<<endl; for (int i=0;i<message_array.size();i++) { cout<<"取到的消息:"<<message_array[i].m_data<<endl; } } pro.__sleep(10); pro.Disconnect(); } int main(int ,char**) { cout<<"Hello UseMQ!"<<endl; //发送消息 send_message_to_mq(); //取消息 get_message_from_mq(); cout<<"Hello UseMQ end!"; return 0; };
Windows运行效果:
Linux运行效果:
相关文章推荐
- linux下安装c++ rabbitmq客户端SimpleAmqpClient
- (3) linux 3.x - client - TCP连接建立系列 — 客户端接收SYNACK和发送ACK
- 高效移植 RabbitMQ C客户端(RabbitMQ-C Client)
- thrift配置——windows客户端与linux服务端通信(C++)
- spring activeMQ 整合(一): 一个简单的demo,测试消息的发送与接收
- 文件发送和接收-client 端/windows
- C#TCPClient应用-一个简单的消息发送和接收
- 最近才知道的一款软件,可以实现在windows下使用linux下的命令,甚至可以使用简单的shell
- RabbitMQ之最简单的消息的发送与接收
- 简单socket服务(三)实现多客户端向服务器发送数据并保证服务器接收到数据
- Java编写一个简单的TCP通信程序。服务器发送一条字符串,客户端接收该信息并显示。
- C++和java通过Socket批量发送和接收文件(C++客户端发送,java服务端接收)
- linux之TCP/IP--简单一发送一接收(1)
- linux 到windows平台c++工程移植(持续更新)
- 使用RabbitMQ简单发送接收消息
- 如何更方便的查看Linux内核代码的更新记录[类似于SVN windows客户端的比较功能]
- RabbitVCS : Linux下类似windows TortoiseSVN的svn客户端
- 使用spring-rabbit测试RabbitMQ消息确认(发送确认,接收确认)
- Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码
- Java——定时请求后端接口数据发送RabbitMQ消息队列到指定MQ服务器