Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >rabbitmq如何工作以及rabbitmq核心概念(翻译)

rabbitmq如何工作以及rabbitmq核心概念(翻译)

作者头像
日薪月亿
发布于 2021-12-23 01:35:41
发布于 2021-12-23 01:35:41
8950
举报
文章被收录于专栏:技术探索技术探索

原文出处: https://dzone.com/articles/how-rabbitmq-works-and-rabbitmq-core-concepts-1

在本文中,我们将学习什么是RabbitMQ,它是如何工作的,以及RabbitMQ的核心概念。 RabbitMQ是一个开源的消息代理软件。它接受来自生产者的消息并将其传递给消费者。它就像一个中间人,可以用来减少Web应用服务器的负载和投递时间。

RabbitMQ是如何工作的

我们简单的看下RabbitMQ是如何工作的。 我们首先熟悉rabbitmq的几个重要概念:

  • 生产者(Producer):发送消息的应用。
  • 消费者(Consumer):接收消息的应用。
  • 队列(Queue):存储消息的缓冲区。
  • 消息(Message):通过RabbitMQ从生产者发送给消费者的信息。
  • 连接(Connection):连接是应用程序和RabbitMQ代理之间的TCP连接。
  • 通道(Channel):通道是连接内部的虚拟连接。当您发布或使用队列中的消息时,都是通过通道完成的。
  • 交换机(Exchange):接收来自生产者的消息,并根据交换类型定义的规则将它们推送到队列中。要接收消息,需要将队列绑定到至少一个交换。
  • 绑定(Binding):绑定是队列和交换之间的链接。
  • 路由密钥(Routing key):路由密钥是Exchange用来决定如何将消息路由到队列的密钥。路由密钥类似于邮件的地址。

Producers向代理发送/发布消息->Consumers从代理接收消息。RabbitMQ充当生产者和消费者之间的通信中间件,即使它们在不同的机器上运行。 当生产者向队列中发送消息时,它不会直接发送,而是使用交换机发送。下面的设计演示了三个主要组件是如何相互连接的。 交换代理负责将消息路由到不同队列。以便消息可以从生产者接收到交换,然后再次转发到队列。这就是所谓的“发布”方法。

将从队列中提取和使用消息;这称为“使用”。

发送消息到多个队列

通过拥有更复杂的应用程序,我们将拥有多个队列。因此消息将在多个队列中发送它。

将消息发送到多个队列交换通过绑定和路由键连接到队列。绑定是为将队列连接到交换而设置的“链接”。路由密钥是一个消息属性。在决定如何将消息路由到队列时(取决于交换类型),交换可能会查看此键。

交换机

消息不是直接通过队列直接发送,相反,生产者通过交换机发送消息。交换机负责将消息路由到不同的队列。交换机接受来自生产者应用程序的消息,并在绑定和路由键的帮助下将它们路由到消息队列。绑定连接着队列和交换机。

RabbitMQ中的消息流

  • 生产者发布一个消息到交换机。当创建交换机时,必须指定其类型。稍后将详细解释不同类型的交换。
  • 交换机接收消息后立马负责消息的路由。根据交换类型,交换会考虑不同的消息属性,例如路由密钥。
  • 必须创建从交换机到队列的绑定。在本例中,我们看到两个绑定到来自交换机的两个不同队列。交换机根据消息属性将消息路由到队列中。
  • 消息一直在队列中,直到被消费者处理
  • 消费者处理消息。

交换机的类型

  1. 直接类型(Direct):直接交换机根据消息路由密钥将消息传递到队列。
  2. 多播类型(fanout): 多播交换机将消息路由到绑定到它的所有队列。
  3. 主题类型(Topic): 主题交换在路由密钥和绑定中指定的路由模式之间进行通配符匹配。
  4. 头类型(Headers): 头交换机使用消息头属性进行路由。

RabbitMQ核心概念

这里有一些重要的概念需要在我们深入研究rabbitmq之前进行描述。

  • 生产者(Producer): 发送消息的应用。
  • 消费者(Consumer):接收消息的应用。
  • 队列(Queue): 存储消息的缓冲区。
  • 消息(Message):通过RabbitMQ从生产者发送给消费者的信息。
  • 连接(Connection):连接是应用程序和RabbitMQ代理之间的TCP连接。
  • 通道(Channel):通道是连接内部的虚拟连接。当您发布或使用队列中的消息时,都是通过通道完成的。
  • 交换机(Exchange):接收来自生产者的消息,并根据交换类型定义的规则将它们推送到队列中。要接收消息,需要将队列绑定到至少一个交换。
  • 绑定(Binding):绑定是队列和交换之间的链接。
  • 路由密钥(Routing key):路由密钥是Exchange用来决定如何将消息路由到队列的密钥。路由密钥类似于邮件的地址。
  • AMQP: AMQP(Advanced Message Queuing Protocol)是RabbitmQ消息之间的协议。
  • 用户(Users): 可以使用给定的用户名和密码连接到RabbitmQ。可以为每个用户分配权限,例如在实例中读取、写入和配置权限。

一旦我们熟悉RabbitMQ的核心概念和了解RabbitMQ如何工作,现在让我们用下面的文章来亲身体验rabbitmq:

RabbitMQ Java HelloWorld Example - 在这篇文章中,我们将会学到在java的Hello world 示例中如何使用RabbitMQ。

RabbitMQ Tutorial with Publish/Subscribe Example - 在本教程中,我们将查看rabbitmq的概述,然后我们将逐步开发一个发布/订阅示例。

查看完整的RabbitMQ教程,这里here有具体示例。

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RabbitMQ 基础概念与架构设计及工作机制学习总结
MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ则是一个开源的消息中间件,由erlang语言开发,基于AMQP协议实现的一个软件产品,提供应用程序之间的通信方法,在分布式系统开发中广泛应用。
授客
2024/11/21
4960
RabbitMQ 基础概念与架构设计及工作机制学习总结
Rabbitmq 基本知识
AMQP(Advanced Message Queuing Protocol 高级消息队列协议),一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 Rabbitmq是AMQP协议的实现。
smallmayi
2022/05/12
6010
Rabbitmq 基本知识
RabbitMQ 学习笔记1 - RabbitMQ简介和AMQP详解
消息队列(Message Queue)提供一个异步通信机制,消息的发送者不必苦苦等待着消息被处理完成,转而继续自己的工作。消息中间件负责处理网络通信,如果网络连接不可用,消息被暂存于队列当中,当网络畅通的时候再用。消息队列在企业中应用很广泛,可选择的有ActiveMQ、RabbitMQ,Kafka,阿里巴巴自主开发RocketMQ等。本文讨论 RabbitMQ 。
张云飞Vir
2020/04/09
1.7K0
RabbitMQ 学习笔记1 - RabbitMQ简介和AMQP详解
【我们一起来学 RabbitMQ 一 】RabbitMQ 的基本介绍
嗨,大家好,我是小魔童哪吒,咱们从今天开始进入开源组件的学习,一边学习一边总结一边分享
阿兵云原生
2023/02/16
5120
硬卷消息中间件系列(一):RabbitMQ 入门(核心概念与架构)
在这之前,我们相继卷完了:关系型数据库 MySQL 、 NoSQL 数据库 Redis 、 MongoDB 、搜索引擎 ElasticSearch 、大数据 Hadoop框架、PostgreSQL 数据库、消息中间件 Kafka、分布式协调中间件 Zookeeper 这些系列的知识体系。今天开始,我们将踏上另一个中间件学习之路:RabbitMQ!
民工哥
2023/09/09
1.9K0
硬卷消息中间件系列(一):RabbitMQ 入门(核心概念与架构)
研究一下RabbitMQ
http://192.168.1.6:15672 默认账号:guest / guest
全栈程序员站长
2022/06/30
4960
研究一下RabbitMQ
RabbitMQ入门篇[通俗易懂]
MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信
全栈程序员站长
2022/07/23
4680
RabbitMQ入门篇[通俗易懂]
RabbitMQ是如何实现消息传递的?
RabbitMQ是一个开源的消息代理(Message Broker),它实现了高级消息队列协议(AMQP),用于在应用程序之间进行可靠的异步消息传递。RabbitMQ提供了一种灵活的消息传递模式,可以将消息从一个应用程序传递到另一个应用程序。
GeekLiHua
2025/01/21
1130
RabbitMQ基于windows10安装
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
逍遥壮士
2021/04/13
6590
RabbitMQ基于windows10安装
Rabbitmq小书
1.生产者(Publisher): 发布消息到RabbitMQ中的交换机(Exchange)上
大忽悠爱学习
2022/10/04
3.4K0
Rabbitmq小书
SpringCloud-RabbitMQ消息模型
本文深入介绍了RabbitMQ消息模型,涵盖了基本消息队列、工作消息队列、广播、路由和主题等五种常见消息模型。每种模型都具有独特的特点和适用场景,为开发者提供了灵活而强大的消息传递工具。通过这些模型,RabbitMQ实现了解耦、异步通信以及高效的消息路由,为分布式系统的开发和部署提供了可靠的基础。阅读本文,读者将深入了解RabbitMQ不同消息模型的应用场景和使用方法,为构建可靠的消息传递系统提供了有益的指导。
Damon小智
2024/03/05
2330
SpringCloud-RabbitMQ消息模型
RabbitMQ入门
RabbitMQ是一个开源的AMQP(Advanced Message Queuing Protocol)实现,服务端用Erlang语言编写,支持多种客户端。用于在分布式系统中存储转发消息,在易用性,扩展性,高可用性等方面表现不俗。
CodingDiray
2020/05/13
5770
RabbitMQ入门
RabbitMQ
本篇,我们介绍一下消息队列(MessageQueue)以及生产中比较常使用的框架 RabbitMQ。
1ess
2021/11/01
7800
RabbitMQ
RabbitMQ 核心概念
RabbitMQ 相较于其他消息队列,有一系列防止消息丢失的措施,拥有强悍的高可用性能,它的吞吐量可能没有其他消息队列大,但是其消息的保障性出类拔萃,被广泛用于金融类业务。与其他消息队列的比较以及强大的防止消息丢失的能力我们将在后续文章再做介绍。
海向
2019/09/23
4350
RabbitMQ 核心概念
RabbitMQ的队列模式你真的懂吗?
主要解决:处理资源密集型任务,且还要等他完成。有了工作队列,就可将具体的工作放到后面去做,将工作封装为一个消息,发送到队列中,一个工作进程就可取出消息并完成工作。若启动了多个工作进程,则工作就可在多个进程间共享。
JavaEdge
2024/09/11
3160
RabbitMQ的队列模式你真的懂吗?
快速入门RabbitMQ并且加入项目实战
📣 📣 📣 📢📢📢 ☀️☀️你好啊!小伙伴,我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 📒 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️,擅长使用Java技术开发web项目和工具 📒 文章内容丰富:覆盖大部分java必学技术栈,前端,计算机基础,容器等方面的文章 📒 如果你也对Java感兴趣,关注小冷吧,一起探索Java技术的生态与进步,一起讨论Java技术的使用与学习 ✏️高质量技术专栏专栏链接: 微服务,数据结构,netty,单点登录,SSM ,SpringCloud
冷环渊
2022/11/12
1.1K0
快速入门RabbitMQ并且加入项目实战
快速学习-RabbitMQ快速入门
RabbitMQ由Erlang语言开发,Erlang语言用于并发及分布式系统的开发,在电信领域应用广泛,OTP(Open Telecom Platform)作为Erlang语言的一部分,包含了很多基于Erlang开发的中间件及工具库,安装RabbitMQ需 要安装Erlang/OTP,并保持版本匹配,如下图:
cwl_java
2020/01/14
1.1K0
快速学习-RabbitMQ快速入门
原创 | 消息中间件的工作原理和RabbitMQ入门
消息(Message)是指应用于应用之间传送的数据,消息的类型包括文本字符串、JSON、XML、内嵌对象等等...
Bug开发工程师
2019/12/10
1.6K0
Rabbitmq基础
通过 BasicQos 方法设置prefetchCount = 1。这样RabbitMQ就会使得每个Consumer在同一个时间点最多处理1个Message。换句话说,在接收到该Consumer的ack前,他它不会将新的Message分发给它。相反,它会将其分派给不是仍然忙碌的下一个Consumer。 prefetchCount在手动ack的情况下才生效,自动ack不生效。
冬天vs不冷
2025/01/20
610
Rabbitmq基础
【消息队列之rabbitmq】学习RabbitMQ必备品之一
对于RabbitMQ其他知识体系,本文中就不仔细讲解了,先列出系列核概念,帮助大家建立知识体系;
沁溪源
2021/12/20
8480
【消息队列之rabbitmq】学习RabbitMQ必备品之一
相关推荐
RabbitMQ 基础概念与架构设计及工作机制学习总结
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文