1. Dotnet9首页
  2. .NET
  3. .NET相关

初识消息队列/RabbitMQ详解

初识消息队列/RabbitMQ详解

欢迎大家阅读《朝夕Net社区技术专刊》

我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!

今天来给大家分享关于消息队列的内容;作为一个软件技术开发者,听到消息队列这几个字,就有种很高端的感觉;因为现在只要是稍大的平台都要考虑大数据高并发的问题、集群的问题、负载均衡的问题;那么消息队列在解决这类问题上占着举足轻重的地位;比方说小伙伴们常常使用的火车篇购票软件12306就使用到了消息队列;所以消息队列的学习和掌握是作为一个高级开发这必备的技能了。

01 PART 什么是消息队列

初识消息队列/RabbitMQ详解
图1:消息队列

图1就是一个消息队列的使用结构图,比方说买票系统需要生成订单,不是直接就去调用订单系统,而是通过消息队列,把生成订单的数据,写入消息队列中去,然后订单系统就可以到消息队列中去订阅获取数据,再生成订单;消息队列有个特点,先进先出,先存进去的就先被取出来,取出来以后,数据在队列中被删除,消息数据在消息队列中是持久化存储的;只要是没有被取出,就会一直存储在消息队列中

如上图,就把买票系统和生成订单系统做了解耦;即时是生成订单系统发生故障了,并不影响买票系统,依然可以把消息先写入消息队列;等生成订单系统正常了,再继续去生成订单;这里也会涉及到三个名词—生产者/消费者/队列;写入消息到队列的被称为生产者,在消息队列中取出数据的被称为消费者;

在大数据高并发的情况下,服务器压力变大,如果使用消息队列,可以让生产者服务器做集群,消费者服务器也做集群;如图2。

初识消息队列/RabbitMQ详解
图2

如果生产者服务器不能满足需求了,可以来多态服务器,来同时处理,写入消息到消息队列,消费者服务器如果处理能力不够,也可以增加多个消费者服务器,来同时消费消息队列里的数据;从而大大的提高系统的处理能力。

消息队列不仅可以实现一方写入,一方取出,也可以是一方既可以写入,也可以取出;既做生产者,也做消费者;如图3

初识消息队列/RabbitMQ详解
图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的路由配置。
02PART消息队列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在Windows的环境搭建

原文出处:微信公众号【Eleven 朝夕Net社区】

原文链接:https://mp.weixin.qq.com/s/jutDsybEhUyn0SpEZVRYHw

本文观点不代表Dotnet9立场,转载请联系原作者。

发表评论

登录后才能评论