MQ消息队列学习入门

简介: MQ消息队列学习入门

MQ消息队列学习入门

想象一下,在一个繁忙的市场里,每个摊位都是一个独立的服务或应用程序。这些摊位之间需要频繁地交换商品和信息,但是如果他们没有一个有效的沟通系统,市场将会变得一片混乱。这时,消息队列(MQ)就像是一个精心设计的市场广播系统,旨在解决这些摊位(服务)之间的沟通问题。

消息队列的作用

没有MQ的市场就像是一群摊贩直接大声喊话来交流,他们的声音淹没在彼此的喧哗中,导致信息丢失或延误。这种方式不仅效率低下,而且容易出错。MQ出现的目的就是为了解决这个问题,它允许摊贩们通过广播系统发送和接收信息,而不必直接大喊大叫。

同步与异步通信

在没有MQ的市场中,摊贩们必须同步交流,即买家和卖家需要同时在线才能完成交易。这就像是你必须等着对方接电话才能说话。MQ引入了异步通信的概念,就像是留言系统,买家可以留下他们的订单信息,即使卖家暂时不在,他们回来后也能看到订单并处理。

Broker的角色

Broker在MQ系统中的角色就像是市场的管理员,负责维护广播系统,确保信息的正确传递。当摊贩发送信息时,Broker接收并存储信息,然后再将其传递给正确的接收者。这样,即使市场中某些摊位忙于处理客户,信息也不会丢失,可以在稍后的时间处理。

MQ的种类与特点

市场中的广播系统可以有不同的类型,类似于MQ也有多种实现方式。有些MQ像是广播电台,向所有人传递信息(例如Pub/Sub模型),另一些则像是有专线的电话服务,一对一地传递信息(例如点对点队列)。常见的MQ系统包括RabbitMQ、Apache Kafka和ActiveMQ等。

  • RabbitMQ:它就像是一个多功能的广播站,可以处理各种类型的通信需求,支持多种消息协议,适用于复杂的场景。
  • Apache Kafka:这更像是一个高效的新闻台,它可以处理大量的消息流,并且非常擅长处理数据日志和事件流。
  • ActiveMQ:可以比作是一个传统的广播服务,它虽然不像其他系统那样现代化,但是稳定且易于使用,适合许多不需要高吞吐量的应用。

Topic的概念

在MQ中,Topic可以被比作广播系统中的频道。摊贩们可以订阅自己感兴趣的频道,这样他们就只会收到相关的信息,而不是市场中所有的喧嚣。这使得信息的传递更加有序和高效。

消息队列(MQ)系统通常可以分为两类:有Broker的和无Broker的。Broker是消息队列中的中介,负责接收、存储和转发消息。在有Broker的系统中,Broker扮演着消息中心的角色,确保消息的可靠传递。

有Broker的消息队列系统:

  1. RabbitMQ:是一个开源的消息代理,支持多种消息协议,提供可靠的消息传递机制,并支持复杂的路由。
  2. ActiveMQ:也是一个开源的消息代理,支持多种跨语言的客户端和协议,包括点对点和发布/订阅(Pub/Sub)模式。
  3. Apache Kafka:虽然Kafka有时被称为消息代理,它实际上更像是一个分布式流处理平台。它具有高吞吐量和可扩展性,常用于构建实时的数据管道和流应用程序。

重Topic和轻Topic的概念:

  • 重Topic(Heavy Topic):指的是需要处理大量消息或高吞吐量的Topic。这些Topic通常需要强大的后端支持,例如Kafka,以便能够处理和存储大量数据,保证消息的持久性和可靠性。
  • 轻Topic(Light Topic):指的是消息量较少,对性能要求不是特别高的Topic。这类Topic可能用在系统内部通信或者小规模的应用中,不需要像Kafka这样的高性能系统来支持。

在有Broker的系统中,Topic通常是指发布/订阅模式中的一个概念,其中生产者将消息发布到一个Topic,而消费者订阅该Topic以接收消息。这种模式下,Broker负责维护Topic和处理消息的路由。

无Broker的系统,如ZeroMQ,不依赖中央服务器,而是通过在参与者之间建立直接的通信来传递消息。这种模式更多依赖于网络拓扑和参与者之间的协议来管理消息传递。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 存储 监控
RabbitMQ:分布式系统中的高效消息队列
RabbitMQ:分布式系统中的高效消息队列
|
26天前
|
消息中间件 Java
springboot整合消息队列——RabbitMQ
springboot整合消息队列——RabbitMQ
73 0
|
6天前
|
消息中间件 存储 负载均衡
消息队列学习之RabbitMQ
【4月更文挑战第3天】消息队列学习之RabbitMQ,一种基于erlang语言开发的流行的开源消息中间件。
12 0
|
10天前
|
消息中间件 存储 负载均衡
消息队列学习之kafka
【4月更文挑战第2天】消息队列学习之kafka,一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台。
13 2
|
26天前
|
消息中间件 存储 中间件
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
41 0
|
1月前
|
消息中间件 缓存 API
|
1月前
|
消息中间件 存储 Cloud Native
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
|
1月前
|
消息中间件 存储 缓存
【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶
【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶
|
2月前
|
消息中间件 存储 负载均衡
简单入门:消息队列的概念和应用
在复杂的系统架构中,组件间的通信是至关重要的问题。消息队列作为一种解决方案,能够使组件之间的通信更加高效、可靠。本文将从简单到复杂,逐步向您介绍消息队列的概念、使用场景以及如何实现。
80 3
|
2月前
|
消息中间件 Java Kafka
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
103 0