初识消息队列/RabbitMQ详解
欢迎大家阅读《朝夕Net社区技术专刊》
我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!
今天来给大家分享关于消息队列的内容;作为一个软件技术开发者,听到消息队列这几个字,就有种很高端的感觉;因为现在只要是稍大的平台都要考虑大数据高并发的问题、集群的问题、负载均衡的问题;那么消息队列在解决这类问题上占着举足轻重的地位;比方说小伙伴们常常使用的火车篇购票软件12306就使用到了消息队列;所以消息队列的学习和掌握是作为一个高级开发这必备的技能了。
01
PART
什么是消息队列
图1:消息队列
图1就是一个消息队列的使用结构图,比方说买票系统需要生成订单,不是直接就去调用订单系统,而是通过消息队列,把生成订单的数据,写入消息队列中去,然后订单系统就可以到消息队列中去订阅获取数据,再生成订单;消息队列有个特点,先进先出,先存进去的就先被取出来,取出来以后,数据在队列中被删除,消息数据在消息队列中是持久化存储的;只要是没有被取出,就会一直存储在消息队列中
如上图,就把买票系统和生成订单系统做了解耦;即时是生成订单系统发生故障了,并不影响买票系统,依然可以把消息先写入消息队列;等生成订单系统正常了,再继续去生成订单;这里也会涉及到三个名词---生产者/消费者/队列;写入消息到队列的被称为生产者,在消息队列中取出数据的被称为消费者;
在大数据高并发的情况下,服务器压力变大,如果使用消息队列,可以让生产者服务器做集群,消费者服务器也做集群;如图2。
图2
如果生产者服务器不能满足需求了,可以来多态服务器,来同时处理,写入消息到消息队列,消费者服务器如果处理能力不够,也可以增加多个消费者服务器,来同时消费消息队列里的数据;从而大大的提高系统的处理能力。
消息队列不仅可以实现一方写入,一方取出,也可以是一方既可以写入,也可以取出;既做生产者,也做消费者;如图3
图3
怎么样,如上图,就可以做一个多个客户端之间的即时通信了!
经过以上介绍,我们了解了什么是消息队列在我们技术开发中的应用,消息队列能给我们带来什么。他其实就是一个第三方的一个队列;让要做的事情能够排队进行;让多个进程协作完整业务处理;当然了,消息队列也是一个独立的进程;现在业界已经有很多已经成型的消息队列引擎;下面就给大家列举一些。
u ZeroMQ
u 推特的Distributedlog
u ActiveMQ:Apache旗下的老牌消息引擎
u RabbitMQ、Kafka:AMQP的默认实现。
u RocketMQ
u Artemis:Apache的ActiveMQ下的子项目
u Apollo:同样为Apache的ActiveMQ的子项目的号称下一代消息引擎
以上这些消息队列引擎,都已经比较成型,其中RabbitMQ支持的功能非常丰富,RabbitMQ支持集群化,高可用部署架构,支持消息高可靠;支持多种编程语言;现在的技术开发都追求支持高可用,集群,可靠性;所以,学习RabbitMQ是我们的首选;这里我就准备把RabbitMQ给同学们做以介绍,从RabbitMQ的环境准备、环境部署;使用RabbitMQ做一个开发Demo;包括还有RabbitMQ的进阶,支持集群的;RabbitMQ的路由配置。
02
PART
消息队列RabbitMQ
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。
RabbitMQ服务器是用Erlang语言编写的;可以支持的操作系统有:Linux/WindowsNT 到 10/Windows Server2003 到 2016/macOS/Solaris/FreeBSD/TRU64/VxWorks
RabbitMQ支持下列编程语言:C#/Python/Java/Ruby/PHP/JavaScript/Go/Elixir/Objective-C
老师主要是做C#开发培训,老师这里将会以Windows系统作为支持给大家分享;RabbitMQ是支持Windows的
初识消息队列/RabbitMQ详解相关推荐
- Linux中级实战专题篇:rabbitmq(消息中间件p2p模式和pub模式,消息队列rabbitmq详解,单机安装,集群部署以及配置实战)
一.消息中间件相关概念 1.简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台相关 的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息 队列模型,可以在分布 ...
- 消息队列超详解(以RabbitMQ和Kafka为例,为何使用消息队列、优缺点、高可用性、问题解决)
消息队列超详解(以RabbitMQ和Kafka为例) 为什么要用消息队列这个东西? 先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦.异步.削峰. 解耦:现场画个图来说明一 ...
- python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...
当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...
- php mysql 任务队列_PHP+MySQL实现消息队列步骤详解
这次给大家带来PHP+MySQL实现消息队列步骤详解,PHP+MySQL实现消息队列的注意事项有哪些,下面就是实战案例,一起来看一下. 最近遇到一个批量发送短信的需求,短信接口是第三方提供的.刚开始想 ...
- python 消息队列 flask_python分布式爬虫中消息队列知识点详解
当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...
- ucos 消息队列代码详解_用python实现 多进程队的列数据处理详解,零基础记得都收藏哦
今天就为大家分享一篇python 多进程队列数据处理详解,具有很好的参考价值,希望对大家有所帮助.喜欢的话记得点赞转发关注不迷路哦!!! 总之了写到多进程队列数据处理问题,也就不多废话了,直接来上代码 ...
- unix iorp等待队列_FreeRTOS+POSIX之消息队列API详解
FreeRTOS+POSIX概述 可移植操作系统接口(Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义A ...
- rabbitMQ消息队列 consume详解
实现消费者的方法就是 $channel->basic_consume("TestQueue", "", false, false, false, fals ...
- spring boot rabbitmq_Spring Boot2(十):RabbitMQ 详解
关于SpringBoot整合RabbitMQ,我看了微笑哥的博文,实在不知道还有比这更加全面的了.于是我转载过来了.. RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起 ...
最新文章
- AAAI 2019 | 基于不同颗粒度语言联合训练的表示学习
- warning: function declaration isn’t a prototype解决方法
- javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限
- 记一次企业级爬虫系统升级改造(一)
- sklearn自学指南(part32)--保序回归
- set-cookie 和 cookie 的区别_Go Web 编程如何确保Cookie数据的安全传输
- 事务处理与事务的隔离级别
- javascript操作cookie实例
- java邮箱和手机发送链接和验证码_java发送邮箱验证码
- Office文件格式兼容包FileFormatConverters(office 2010)
- 计算机电子表操作格试题,全国计算机等级考试四Excel电子表格操作试题
- 第五部分 家庭创业奔小康6.开家畅销书专送店
- GeoNet: Deep Geodesic Networks for Point Cloud Analysis
- Go语言环境安装及配置
- 银河麒麟Telnet远程登录
- Socket,好像也挺简单,可是,真够烦
- 关于无法安装.NET Framework3.5的问题(0x800F081F)
- bde oracle 商友的流程_BorlandC++使用BDE访问Oracle的方法
- java定义贵宾卡等级_会员卡分成那几个级别,分别有什么叫法
- python读取dat文件经纬度_自动提取kml文件中的经纬度
热门文章
- 【Maven实用技巧】03. Maven 编译打包时如何忽略测试用例
- 《JavaScript 高级程序设计》 7.1 正则表达式支持
- 使用目录服务和 Visual C# .NET 向本地系统添加用户
- java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息
- 如何将Windows 10帐户还原为本地帐户(在Windows Store劫持它之后)
- 搭建WeApacheb网站服务器
- VS2015不能修改安装路径问题
- 打造自己的装机U盘(二)
- Vagrant搭建可移动的PHP开发环境
- linux shell 嵌套expect 与服务器交互脚本