RabbitMQ C++客户端 RabbitMQ Client for Windows 超简单接收发送接口(多线程版)-最近更新2018-05-21

该库特点:

该接口本身不支持多线程,也就是说多个线程不能同时访问一个接口对象。

支持多线程:

但是,由于该接口是值语义,所以在多线程场景中使用没有任何问题。

下面的例子就展示了多线程环境下程序的Demo和结果。

要完成的功能:

1 A线程发送0-99这一百个整数到RabbitMQ队列;

2 同时B线程发送0-99这一百个整数到RabbitMQ队列;

3 C线程(一秒钟之后)一次性取回来A B发送的所有数据;

4 D线程(两秒之后)检查C线程取回的数据是否完整

如有需要:扫码我的博客头像加我即可(还是要先说明一下,该资源时付费资源)

#include 
#include 
#include 
#include "MessageQueue/RabbitMQ.h"
#include "MessageQueue/MessageBody.h"
#include 
#include 
//#include 
using namespace std;
#include 

//--------------------------需要开发者自己填写的信息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 = "localhost";
//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 = 100;
int test_get_number = 200;
//--------------------------建议开发者设置批量操作end--------------------------------------
//引用全局变量
std::multiset MySet;
//发送数据到RabbitMQ服务的全部过程如下:
//!!!每次publish之前必须调用Connect,publish之后调用Disconnect!!!
DWORD WINAPI  send_message_to_mq(LPVOID lpParameter)
{
	vector message_array;
	CMessage message("");
	//制作test_send_number个消息,用于发送到RabbitMQ服务器
	for (int i=0;i::iterator itr = message_array.begin(); itr != message_array.end(); ++itr)
		{
			cout<<(*itr).m_data<<" ";
		}
		cout< message_array;
	string& err = GetErr();    

	//RabbitMQ服务器的连接信息,这里改成你自己的IP/PORT
	CRabbitMQ pro(rabbitmq_server_ip,rabbitmq_server_port,rabbitmq_server_user,rabbitmq_server_psw);
	pro.__sleep(1000);//等待生产者发送完毕再取
	if(pro.Connect(err)<0)
	{
		cout<<"取消息时连接失败!"<

运行验证结果:

RabbitMQ C++客户端 RabbitMQ Client for Windows 超简单接收发送接口(多线程版)-最近更新2018-05-21_第1张图片

你可能感兴趣的:(RabbitMQ)