【厚积薄发系列】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);
(未完待续,下一篇见!)
【厚积薄发系列】C++项目总结9—ZeroMQ消息队列入门及分布式系统中应用(一)相关推荐
- 消息队列入门案例-编码
我们就来编写里面的代码,那么我们应该怎么去编写这个代码呢,先把步骤说一下,在使用消息队列的时候呢,你是不是得有一个队列,那我们是不是先把队列给创建出来,然后有消息的发送者,消息的接收者,就是Provi ...
- 关于创建zeromq消息队列,设置和更改IP地址,远程可以访问,不只是本地链接。python代码。
关于zeromq的创建,绑定本地,和绑定其他客户端的方法. 网上一大堆关于zmq的通信模式的介绍,包括三种类型,具体我就不在描述. 但是他们给的demo,都是创建本地作为server服务端,也作为cl ...
- Spring Boot 项目 RedisTemplate 实现轻量级消息队列
背景公司项目有个需求, 前端上传excel文件, 后端读取数据.处理数据.返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可能十分耗时, 没人 ...
- 高薪程序员面试题精讲系列127之如何设计一个消息队列?如何保证消息的执行顺序?
一. 面试题及剖析 1. 今日面试题 如何保证消息队列中消息的执行顺序? RabbitMQ消息过期了怎么办? 如何设计一个消息队列? 如果让你自己设计一个消息队列,该怎么实现? 2. 题目剖析 壹哥在 ...
- RabbitMQ 消息队列入门
什么是 RabbitMQ MQ(Message Queue)消息队列 消息队列中间件,是分布式系统中的重要组件:主要解决异步处理.应用解耦.流量削峰等问题,从而实现高性能,高可用,可伸缩和最终一致性的 ...
- rabbitmq java实例_RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
转载http://blog.csdn.net/u013142781 一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式 ...
- 消息队列入门案例-环境搭建
我们就来编写一个RabbitMQ的入门案例,首先第一步呢,先要去创建一个Project,那么至于Project的创建方式呢,我们都可以,比如用Spring官网创建的方式,创建项目也可以,你也可以在ID ...
- RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
转载http://blog.csdn.net/u013142781 一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式 ...
- rabbitmq消息队列入门到整合springboot(篇幅较长内容详细)
1.安装rabbitmq服务器 我们选择在linux下安装 安装的前提需要在虚拟机下安装docker docker pull rabbitmq:management(拉去镜像) docker run ...
最新文章
- 【camera】自动泊车-基于深度学习的视觉车位检测项目(课程设计--训练代码、测试代码、部署demo)(2)
- Java培训哪家机构好
- SoapUI进行REST请求,POST方法提交到数据库的数据乱码问题
- SOAP和HTTP 两种基本传输协议
- java 窗口扩大,JavaScript实现拉框放大
- poj 1386 Play on Words(有向图欧拉回路)
- 300 万行核心代码全部开源!OceanBase 开启 3.0 时代
- ASP.NET的Application简介1
- iOS开发系列-ARC浅解
- 操作系统概念第六章部分作业题答案
- sql数据库置疑解决办法
- dell 恢复介质_如何使用Dell DataSafe Local Backup创建系统恢复介质
- 自然语言处理怎么最快入门
- SpringBoot PageOffice 在线编辑 (完整版、有源码)
- 让实时操作系统助力电力电子系统设计
- 当红小生酒店施暴性感女星
- 大数据产品价值主张_大数据对商业模式创新的影响
- 全美计算机科学与技术排名,卡耐基梅隆大学计算机科学专业排名第1(2020年USNEWS美国排名)...
- #17-【二分】gdgzoi::比赛.Contest2281.Problem D (包裹快递)(zly#1)
- 配置Snappy压缩