【厚积薄发系列】C++项目总结9—ZeroMQ消息队列入门及分布式系统中应用(一)

理论背景:

MQ:消息队列是分布式系统中很重要的中间件。主要用于解决模块解耦,异步消息,流量销峰等问题。

类型:消息队列种类业界比较多,常用的有ZeroMQ、RabbitMQ、RocketMQ等等。

这里不逐一列举了,直奔今天的主题ZeroMQ。本系列将从纯代码的角度先讲ZeroMQ基本使用,再到最终使用ZeroMQ完成一个简单分布式计算系统,最后再理论总结。

具体实现:

ZeroMQ的三种基本模式:请求-应答模式;发布-订阅模式;管道模式。(ZeroMQ第三方库文件可以网上下载或者需要的留言)

1、请求应答模式。

不管是啥网络库,网络的通信的本质,无非就是下面两点:

服务端a、创建socket;b、监听指定端口;d、接收/发送数据

客户端a、创建socket;b、绑定(IP地址、端口) c、连接; d、接收/发送数据

服务端核心程序:

首先要创建上下文:                                                               

创建socket,第二个参数设置模式ZMQ_REP(应答模式)、绑定指定端口、接收/发送数据:

void *context = zmq_ctx_new ();     
void *responder = zmq_socket (context, ZMQ_REP);
int rc = zmq_bind (responder, "tcp://*:5555");   
char buffer [10];                                                                              
zmq_recv (responder, buffer, 10, 0);                                                                                                                                 
zmq_send (responder, "ZeroMQ!", 100, 0);  

客户端核心程序类似:

创建上下文、创建socket(设置请求模式)、连接服务器、接收/发送数据

void *context = zmq_ctx_new ();                                                                    
void *requester = zmq_socket (context, ZMQ_REQ);                                                                                                    
zmq_connect (requester, "tcp://127.0.0.1:5555");       
char buffer [10];                                                                              
zmq_recv (responder, buffer, 10, 0);                                                                                                         

zmq_send (responder, "lujiang", sizeof(buffer), 0);  

(未完待续,下一篇见!)

猜你喜欢

转载自blog.csdn.net/lujiang0120/article/details/80528319
今日推荐