linux rabbitmq客户端,[置頂] RabbitMQ C++客戶端 RabbitMQ Client for Windows/Linux 超簡單接收發送接口...

聯系QQ 3508551694,該資源(本人制作)付費使用,天生就對有償服務反感的人請繞行。

解耦是消息隊列要解決的最本質問題。

所謂解耦,簡單點講就是一個事務,只關心核心的流程。而需要依賴其他系統但不那么重要的事情,有通知即可,無需等待結果。

消息隊列的基本功能之一是進行廣播。

如果下游有很多系統關心你的系統發出的通知的時候,果斷地使用消息隊列吧。

掰開了揉碎了看,最簡單的消息隊列可以做成一個消息轉發器,把一次RPC做成兩次RPC。發送者把消息投遞到服務端,服務端再將消息轉發一手到接收端,就是這么簡單。

RabbitMQ是持久化的MQ。

隨時更新rabbitmq-c最新版本!Debug | Release 版本!一個發送接口 一個接收接口 簡單至極!

持續更新最新rabbitmq-c

Windows VS2010

Linux (CentOS)g++

登錄首頁:

http://localhost:15672/    如果是異地服務器,需要填寫服務器的IP才能訪問

RabbitMQ服務器隊列

2943a347610891230b99ff33d8c10a57.jpe

全部資源

百度網盤

a6714871e4c5bed119e8f3dd99e315a5.jpe

eca33a0b13609f807fb4604d152b737c.jpe

d18343aa1e5966fc8fcb089c8acfdc06.jpe

最新rabbitmq-c的源碼編譯生成的庫文件

71d707f407635d90f030bc513b494f04.jpe

開發者可以直接使用CRabbitMQ類來解決上傳下載,接口更方便好用

升級日志

2017-02-05

Windows下,rabbitmq-c-master中增加了用CMake生成的sln工程

2016-12-29

修改鏈接失敗的內存泄漏問題

2016-07-03

添加全局變量err,及其獲取函數GetErr()

Windows可以編譯32位dll

Linux可以編譯so

發送和接收的示例代碼

#include

#include

#include

#include

#include "MessageQueue/RabbitMQ.h"

#include "MessageQueue/MessageBody.h"

#include

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 message_array;

CMessage message("");

//制作test_send_number個消息,用於發送到RabbitMQ服務器

for (int i=0;i

{

ostringstream oss;

oss<

//這里創建你要發送的數據,放到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<

return ;

}

else

{

cout<

}

//聲明一個交換機,聲明一次,下次不需要再次聲明

if(pro.exchange_declare(my_test_exchange, err) < 0)

{

cout<

return ;

}

else

{

cout<

}

//聲明一個隊列,聲明一次,下次不需要再次聲明

if( (pro.queue_declare(my_test_queue, err) < 0) )

{

cout<

return ;

}

else

{

cout<

}

//將交換機綁定到隊列, 綁定一次,后面不需要再綁定

if( (pro.queue_bind(my_test_queue,my_test_exchange,my_test_bind_key, err)<0) )

{

cout<

return ;

}

else

{

cout<

}

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<

}

else

{

cout<

for (vector::iterator itr = message_array.begin(); itr != message_array.end(); ++itr)

{

cout<

}

}

pro.__sleep(10);

pro.Disconnect();

}

//從RabbitMQ取數據的全部過程如下

void get_message_from_mq(void)

{

vector 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<

return ;

}

else

{

cout<

}

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<

}

else

{

cout<

for (int i=0;i

{

cout<

}

}

pro.__sleep(10);

pro.Disconnect();

}

int main(int ,char**)

{

cout<

//發送消息

send_message_to_mq();

//取消息

get_message_from_mq();

cout<

return 0;

};

Windows運行效果:

335b51f219761c3b361a8988ef49e0b3.jpe

Linux運行效果:

b41a8c4a250f885d3f680b76dc482d4d.jpe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值