本章主要讨论RabbitMQ的架构模型,AMQP协议是什么,以及RabbitMQ和AMQP之间的关系,还会讨论消息从生产者发出和送达到消费者这一过程要经历哪些步骤。
创新互联专注于龙湖网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供龙湖营销型网站建设,龙湖网站制作、龙湖网页设计、龙湖网站官网定制、成都微信小程序服务,打造龙湖网络公司原创品牌,更为您提供龙湖网站排名全网营销落地服务。RabbitMQ整体上是生产者与消费者模型,主要负责接收、存储、转发消息。
RabbitMQ的整体架构如图2-1所示。
图2-1 RabbitMQ整体模型架构
后面的章节开始对图中的组件进行详细介绍。
2.1 消息生产者-消息消费者-Broker
(1)Producer:生产者,负责创建并投递消息。
生产者创建消息,然后发布到RabbitMQ中。消息一般可以包含2个部分:消息体和标签(Label):
(A)消息体也可以称之为payload,在实际应用中,消息体一般是业务数据,比如JSON字符串。
(B)消息的标签(Label)用来描述消息的信息,包含交换器的名称和路由键。生产者把消息交给RabbitMQ,RabbitMQ之后会根据标签的内容把消息发送给消费者(Consumer)。
(2)Consumer:消费者,负责接收和处理消息。
消费者连接到RabbitMQ服务器并订阅指定的消息队列。消息队列中的消息只保留了消息的消息体(payload),因为在消息路由的过程中,消息的标签(Label)会被丢弃,存入到消息队列中的消息只有消息体,消费者并不知道消息的生产者是谁。
(3)Broker:消息中间件的服务节点。
一个RabbitMQ Broker可以简单地看作是一个RabbitMQ服务节点,一个RabbitMQ服务实例,一个RabbitMQ服务器。
图2-2展示了生产者将消息存入RabbitMQ Broker,以及消费者从RabbitMQ Broker中消费的整个流程。
图2-2 消息队列的运转过程
首先生产者将业务数据封装成消息并发送(AMQP协议里对应的命令为Basic.Publish)到Broker中。消费者订阅并接收消息(AMQP协议里对应的命令为Basic.Consume和Basic.Get),获得消息中原始的业务数据后开始加工。为了MQ的运行效率,处理业务数据的线程并不一定和接收消息的线程是同一个线程,消费者进程可以使用A线程去接收消息,存入到内存中(比如使用Java中的BlockingQueue),再使用B线程从内存中读取数据进行业务处理,实现解耦,以异步执行的方式提高整个应用的数据处理效率。
如果你觉的这篇文章对你有用,记得点赞收藏,以防找不到我哦~
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧