理论背景:

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

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

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

  1. 消息队列入门案例-编码

    我们就来编写里面的代码,那么我们应该怎么去编写这个代码呢,先把步骤说一下,在使用消息队列的时候呢,你是不是得有一个队列,那我们是不是先把队列给创建出来,然后有消息的发送者,消息的接收者,就是Provi ...

  2. 关于创建zeromq消息队列,设置和更改IP地址,远程可以访问,不只是本地链接。python代码。

    关于zeromq的创建,绑定本地,和绑定其他客户端的方法. 网上一大堆关于zmq的通信模式的介绍,包括三种类型,具体我就不在描述. 但是他们给的demo,都是创建本地作为server服务端,也作为cl ...

  3. Spring Boot 项目 RedisTemplate 实现轻量级消息队列

    背景公司项目有个需求, 前端上传excel文件, 后端读取数据.处理数据.返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可能十分耗时, 没人 ...

  4. 高薪程序员面试题精讲系列127之如何设计一个消息队列?如何保证消息的执行顺序?

    一. 面试题及剖析 1. 今日面试题 如何保证消息队列中消息的执行顺序? RabbitMQ消息过期了怎么办? 如何设计一个消息队列? 如果让你自己设计一个消息队列,该怎么实现? 2. 题目剖析 壹哥在 ...

  5. RabbitMQ 消息队列入门

    什么是 RabbitMQ MQ(Message Queue)消息队列 消息队列中间件,是分布式系统中的重要组件:主要解决异步处理.应用解耦.流量削峰等问题,从而实现高性能,高可用,可伸缩和最终一致性的 ...

  6. rabbitmq java实例_RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

    转载http://blog.csdn.net/u013142781 一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式 ...

  7. 消息队列入门案例-环境搭建

    我们就来编写一个RabbitMQ的入门案例,首先第一步呢,先要去创建一个Project,那么至于Project的创建方式呢,我们都可以,比如用Spring官网创建的方式,创建项目也可以,你也可以在ID ...

  8. RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

    转载http://blog.csdn.net/u013142781 一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式 ...

  9. rabbitmq消息队列入门到整合springboot(篇幅较长内容详细)

    1.安装rabbitmq服务器 我们选择在linux下安装 安装的前提需要在虚拟机下安装docker docker pull rabbitmq:management(拉去镜像) docker run ...

最新文章

  1. 【camera】自动泊车-基于深度学习的视觉车位检测项目(课程设计--训练代码、测试代码、部署demo)(2)
  2. Java培训哪家机构好
  3. SoapUI进行REST请求,POST方法提交到数据库的数据乱码问题
  4. SOAP和HTTP 两种基本传输协议
  5. java 窗口扩大,JavaScript实现拉框放大
  6. poj 1386 Play on Words(有向图欧拉回路)
  7. 300 万行核心代码全部开源!OceanBase 开启 3.0 时代
  8. ASP.NET的Application简介1
  9. iOS开发系列-ARC浅解
  10. 操作系统概念第六章部分作业题答案
  11. sql数据库置疑解决办法
  12. dell 恢复介质_如何使用Dell DataSafe Local Backup创建系统恢复介质
  13. 自然语言处理怎么最快入门
  14. SpringBoot PageOffice 在线编辑 (完整版、有源码)
  15. 让实时操作系统助力电力电子系统设计
  16. 当红小生酒店施暴性感女星
  17. 大数据产品价值主张_大数据对商业模式创新的影响
  18. 全美计算机科学与技术排名,卡耐基梅隆大学计算机科学专业排名第1(2020年USNEWS美国排名)...
  19. #17-【二分】gdgzoi::比赛.Contest2281.Problem D (包裹快递)(zly#1)
  20. 配置Snappy压缩

热门文章

  1. spss分析方法-多个独立样本检验(转载)
  2. 影响企业未来的十大管理理念
  3. 计算机更改默认设置,电脑怎么修改默认打开程序 Win7设置默认打开程序方法详解...
  4. 有效学习python
  5. 都在说软件测试真的干不到35岁,那咋办呢...我都36了...
  6. 不租服务器,自建个人商业网站(1)
  7. vue笔记:父子传值奥利给!
  8. 前端Docker部署方案
  9. 脱颖而出 你凭什么得到一份好工作
  10. Protobuf(Protocol Buffer)在Unity中的简单应用