欢迎大家阅读《朝夕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详解相关推荐

  1. Linux中级实战专题篇:rabbitmq(消息中间件p2p模式和pub模式,消息队列rabbitmq详解,单机安装,集群部署以及配置实战)

    一.消息中间件相关概念 1.简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台相关 的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息 队列模型,可以在分布 ...

  2. 消息队列超详解(以RabbitMQ和Kafka为例,为何使用消息队列、优缺点、高可用性、问题解决)

    消息队列超详解(以RabbitMQ和Kafka为例) 为什么要用消息队列这个东西? 先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦.异步.削峰. 解耦:现场画个图来说明一 ...

  3. python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

  4. php mysql 任务队列_PHP+MySQL实现消息队列步骤详解

    这次给大家带来PHP+MySQL实现消息队列步骤详解,PHP+MySQL实现消息队列的注意事项有哪些,下面就是实战案例,一起来看一下. 最近遇到一个批量发送短信的需求,短信接口是第三方提供的.刚开始想 ...

  5. python 消息队列 flask_python分布式爬虫中消息队列知识点详解

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

  6. ucos 消息队列代码详解_用python实现 多进程队的列数据处理详解,零基础记得都收藏哦

    今天就为大家分享一篇python 多进程队列数据处理详解,具有很好的参考价值,希望对大家有所帮助.喜欢的话记得点赞转发关注不迷路哦!!! 总之了写到多进程队列数据处理问题,也就不多废话了,直接来上代码 ...

  7. unix iorp等待队列_FreeRTOS+POSIX之消息队列API详解

    FreeRTOS+POSIX概述 可移植操作系统接口(Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义A ...

  8. rabbitMQ消息队列 consume详解

    实现消费者的方法就是 $channel->basic_consume("TestQueue", "", false, false, false, fals ...

  9. spring boot rabbitmq_Spring Boot2(十):RabbitMQ 详解

    关于SpringBoot整合RabbitMQ,我看了微笑哥的博文,实在不知道还有比这更加全面的了.于是我转载过来了.. RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起 ...

最新文章

  1. AAAI 2019 | 基于不同颗粒度语言联合训练的表示学习
  2. warning: function declaration isn’t a prototype解决方法
  3. javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限
  4. 记一次企业级爬虫系统升级改造(一)
  5. sklearn自学指南(part32)--保序回归
  6. set-cookie 和 cookie 的区别_Go Web 编程如何确保Cookie数据的安全传输
  7. 事务处理与事务的隔离级别
  8. javascript操作cookie实例
  9. java邮箱和手机发送链接和验证码_java发送邮箱验证码
  10. Office文件格式兼容包FileFormatConverters(office 2010)
  11. 计算机电子表操作格试题,全国计算机等级考试四Excel电子表格操作试题
  12. 第五部分 家庭创业奔小康6.开家畅销书专送店
  13. GeoNet: Deep Geodesic Networks for Point Cloud Analysis
  14. Go语言环境安装及配置
  15. 银河麒麟Telnet远程登录
  16. Socket,好像也挺简单,可是,真够烦
  17. 关于无法安装.NET Framework3.5的问题(0x800F081F)
  18. bde oracle 商友的流程_BorlandC++使用BDE访问Oracle的方法
  19. java定义贵宾卡等级_会员卡分成那几个级别,分别有什么叫法
  20. python读取dat文件经纬度_自动提取kml文件中的经纬度

热门文章

  1. 【Maven实用技巧】03. Maven 编译打包时如何忽略测试用例
  2. 《JavaScript 高级程序设计》 7.1 正则表达式支持
  3. 使用目录服务和 Visual C# .NET 向本地系统添加用户
  4. java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息
  5. 如何将Windows 10帐户还原为本地帐户(在Windows Store劫持它之后)
  6. 搭建WeApacheb网站服务器
  7. VS2015不能修改安装路径问题
  8. 打造自己的装机U盘(二)
  9. Vagrant搭建可移动的PHP开发环境
  10. linux shell 嵌套expect 与服务器交互脚本