加入收藏 | 设为首页 | 会员中心 | 我要投稿 揭阳站长网 (https://www.0663zz.cn/)- 机器学习、行业智能、决策智能、云计算、AI应用!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

消息队列RabbitMQ入门与PHP实例详解

发布时间:2022-08-10 11:27:23 所属栏目:PHP教程 来源:互联网
导读:消息队列介绍以及消息队列应用场景 RabbitMQ 说明 MQ(Message Queue) 即消息队列,是应用间的通信方式,消息发送后可立即返回,由消息系统来确保消息的可靠传递。消息队列是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向
  消息队列介绍以及消息队列应用场景
  RabbitMQ
  说明
  MQ(Message Queue) 即消息队列,是应用间的通信方式,消息发送后可立即返回,由消息系统来确保消息的可靠传递。”消息队列“是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现生产者和消费者的解耦。
 
  为什么使用消息中间件?
  消息队列是分布式系统中重要的组件,解决应用解耦,异步消息,流量削峰等问题,实现高并发,高可用,可伸缩和最终一致性架构
 
  异步处理
  用户注册信息后需要发送邮件和注册短信
  1、用户注册信息写入数据库后即使返回注册成功的信息
  2、发送邮件和注册短信通过消息队列异步执行,用户不需要等待这两个操作
  在这里插入图片描述
 
  应用解耦
  用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口,进行增减库存
  1、用户下单入列生产,返回成功提示
  2、队列消费库存系统,进行库存增减
  在这里插入图片描述
 
  流量削峰
  流量削峰也是消息队列中的常见场景,一般在秒杀或团抢活动中使用广泛
  1、当一批用户请求过来进入列队,控制入列数量,超出一定数量返回秒杀结束
  2、然后队列一个个按照先进先出进行队列消费
  在这里插入图片描述
 
  Rabbitmq特性
 
  可靠性(Reliability) RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。
  灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个 Exchange 绑定在一起,也通过插件机制实现自己的 Exchange 。
  消息集群(Clustering) 多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker 。
  高可用(Highly Available Queues) 队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。
  多种协议(Multi-protocol) RabbitMQ 支持多种消息队列协议,比如 STOMP、MQTT 等等。
  多语言客户端(Many Clients) RabbitMQ 几乎支持所有常用语言,比如PHP Java、.NET、Ruby 等等。
  管理界面(Management UI) RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面。
  跟踪机制(Tracing) 如果消息异常,RabbitMQ 提供了消息跟踪机制,使用者可以找出发生了什么。
  插件机制(Plugin System) RabbitMQ 提供了许多插件,来从多方面进行扩展,也可以编写自己的插件。
 
  RabbitMQ的工作原理
  在这里插入图片描述
 
  Broker: 接收和分发消息的应用,RabbitMQ Server就是Message Broker。
 
  Virtual host: 类似于mysql的数据库,当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等。
 
  Connection: publisher/consumer和broker之间的TCP连接。
 
  Channel: 如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel是在connection内部建立的逻辑连接Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销。
 
  Exchange: message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到queue中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)。
 
  Queue: 消息最终被送到这里等待consumer取走。一个message可以被同时拷贝到多个queue中。

(编辑:揭阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读