RocketMQ学习1 概念简介+安装运行

本文详细阐述了RocketMQ的基本概念,包括主题、消息标签、消息类型等,介绍了其在分布式系统中的应用以及如何在Windows平台上安装和运行。还演示了验证过程,预示着后续将深入探讨实际应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RocketMQ学习1 概念简介+安装运行

简介

定义

RocketMQ是一款分布式消息中间件,主要用于解决分布式系统中通信和数据处理问题,在不同场景下有着不同的作用。最开始是阿里巴巴内部开发出来使用的工具,后续提交到Apache上孵化。

官网中,对最新版的5.0版本的定义是: RocketMQ 5.0:云原生“消息、事件、流”实时数据处理平台,覆盖云边端一体化数据处理场景。

官网首页中,列举的几大核心特性,分别是:云原生,高吞吐,流处理,金融级,架构简单,生态友好。

而在我们平常的项目中,它通常可以用来起到如下的作用:

  1. 业务解耦: 通过发布/订阅(Publish/Subscribe)模型,生产者无需关心消费者的实现细节,只需要将消息发送到指定的主题(Topic),消费者根据自己的需求订阅这些主题并处理消息。这样可以降低不同服务之间的直接依赖,使得各个模块独立扩展和维护。
  2. 异步处理:允许任务异步执行,提高响应速度。例如,在订单系统中,下单操作完成后可以通过RocketMQ发送一个异步消息给库存系统去更新库存,用户无需等待库存系统的响应就能得到下单成功的反馈。
  3. 削峰填谷:当服务端短时间内收到大量请求时,RocketMQ可以作为缓冲区暂存请求,避免服务因瞬时流量高峰而崩溃,同时让后端服务可以根据自身的处理能力以更稳定的速率消费消息。
  4. 流量控制与负载均衡:通过队列机制实现消息的有序、批量或者延迟投递,并且支持在多个消费者之间进行负载均衡,确保整个系统的稳定性和可用性。
  5. 事务消息:RocketMQ支持分布式事务消息,能够保证在分布式环境下,如果业务操作和消息发送一并成功或都失败,则保持最终一致性。
  6. 监控与报警:内置丰富的运维监控工具,支持对消息堆积、消息延迟等指标的实时监控,并在出现问题时触发报警,以便及时人工介入处理。

总结来说,RocketMQ作为一种高效的消息中间件,是构建高并发、高性能、高可用分布式系统的重要基础设施之一。

与其它常见产品的对比

官方文档中,也给出了RocketMQ与市面上常用的相关产品的对比表格,我们可以观察到,RocketMQ各方面上,支持的都比较到位:

Messaging ProductClient SDKProtocol and SpecificationOrdered MessageScheduled MessageBatched MessageBroadCast MessageMessage FilterServer Triggered RedeliveryMessage StorageMessage RetroactiveMessage PriorityHigh Availability and FailoverMessage TrackConfigurationManagement and Operation Tools
ActiveMQJava, .NET, C++ etc.Push model, support OpenWire, STOMP, AMQP, MQTT, JMSExclusive Consumer or Exclusive Queues can ensure orderingSupportedNot SupportedSupportedSupportedNot SupportedSupports very fast persistence using JDBC along with a high performance journal,such as levelDB, kahaDBSupportedSupportedSupported, depending on storage,if using levelDB it requires a ZooKeeper serverNot SupportedThe default configuration is low level, user need to optimize the configuration parametersSupported
KafkaJava, Scala etc.Pull model, support TCPEnsure ordering of messages within a partitionNot SupportedSupported, with async producerNot SupportedSupported, you can use Kafka Streams to filter messagesNot SupportedHigh performance file storageSupported offset indicateNot SupportedSupported, requires a ZooKeeper serverNot SupportedKafka uses key-value pairs format for configuration. These values can be supplied either from a file or programmatically.Supported, use terminal command to expose core metrics
RocketMQJava, C++, GoPull model, support TCP, JMS, OpenMessagingEnsure strict ordering of messages,and can scale out gracefullySupportedSupported, with sync mode to avoid message lossSupportedSupported, property filter expressions based on SQL92SupportedHigh performance and low latency file storageSupported timestamp and offset two indicatesNot SupportedSupported, Master-Slave model, without another kitSupportedWork out of box,user only need to pay attention to a few configurationsSupported, rich web and terminal command to expose core metrics

基本概念

接下来,我们一起来了解下RocketMQ的比较重要部分的基础概念。

主题(Topic)

Topic是Apache RocketMQ 中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。主题通过TopicName来做唯一标识和区分。
生产者将消息发送到指定的Topic,而消费者则订阅特定的Topic以接收相关消息。是RocketMQ消息发布和订阅的基本单元。

消息标签(MessageTag)

消息标签是Apache RocketMQ 提供的细粒度消息分类属性,可以在主题层级之下做消息类型的细分。消费者通过订阅特定的标签来实现细粒度过滤。

消息类型(MessageType)

Apache RocketMQ 中按照消息传输特性的不同而定义的分类,用于类型管理和安全校验。 Apache RocketMQ 支持的消息类型有普通消息、顺序消息、事务消息和定时/延时消息。、

Apache RocketMQ 从5.0版本开始,支持强制校验消息类型,即每个主题Topic只允许发送一种消息类型的消息,这样可以更好的运维和管理生产系统,避免混乱。但同时保证向下兼容4.x版本行为,强制校验功能默认关闭,推荐通过服务端参数 enableTopicMessageTypeCheck 手动开启校验。

消息队列(MessageQueue)

队列是 Apache RocketMQ 中消息存储和传输的实际容器,也是消息的最小存储单元。 Apache RocketMQ 的所有主题都是由多个队列组成,以此实现队列数量的水平拆分和队列内部的流式存储。队列通过QueueId来做唯一标识和区分。

消息(Message)

消息是 Apache RocketMQ 中的最小数据传输单元。生产者将业务数据的负载和拓展属性包装成消息发送到服务端,服务端按照相关语义将消息投递到消费端进行消费。

生产者(Producer)

生产者是Apache RocketMQ 系统中用来构建并传输消息到服务端的运行实体。生产者通常被集成在业务系统中,将业务消息按照要求封装成消息并发送至服务端。

消费者分组(ConsumerGroup)

消费者分组是Apache RocketMQ 系统中承载多个消费行为一致的消费者的负载均衡分组。和消费者不同,消费者分组并不是运行实体,而是一个逻辑资源。在 Apache RocketMQ 中,通过消费者分组内初始化多个消费者实现消费性能的水平扩展以及高可用容灾。

消费者(Consumer)

消费者是Apache RocketMQ 中用来接收并处理消息的运行实体。消费者通常被集成在业务系统中,从服务端获取消息,并将消息转化成业务可理解的信息,供业务逻辑处理。

消息代理(Broker)

Broker是RocketMQ的核心组件,负责存储消息、接收生产者消息、推送消息给消费者等。RocketMQ集群由多个Broker组成,形成分布式的消息存储和传递系统。

名称服务器(NameServer)

Name Server是RocketMQ的寻址服务器,负责记录和管理Broker的元数据信息。Producer和Consumer通过Name Server找到相应的Broker。

安装运行

Windows平台

首先,在下载页面选择一个合适的版本进行下载。因为笔者是开发练习学习使用,所以直接选择了最新版本-5.1.4。
切记需要有Java开发环境。
在这里插入图片描述
下载好后,解压缩到指定文件路径。
然后配置环境变量,增加变量 ROCKETMQ_HOME,变量值填写解压后存放的目录,如:D:\rocketmq-all-5.1.4-bin-release
在这里插入图片描述
一切就绪后,进入安装路径下的bin目录下,打开命令行,执行命令

mqnamesrv.cmd

等待几秒后,就启动成功了。注意。默认的端口是9876。切记使用过程中,不能关掉当前命令行
在这里插入图片描述
然后再另外打开一个终端窗口,执行命令:

.\mqbroker -n localhost:9876

当提示如图信息时,就表示启动成功了。
在这里插入图片描述

验证

还是进入到bin目录下,打开命令行,执行如下命令:

# 设置环境变量-基于当前窗口,会话级别
SET NAMESRV_ADDR=localhost:9876
# 模拟发送消息
tools.cmd org.apache.rocketmq.example.quickstart.Producer
# 模拟消费消息
tools.cmd org.apache.rocketmq.example.quickstart.Consumer

小结

本篇文章介绍了下Apache Rocket MQ的基本信息和安装方式,以及简单的验证流程,下篇文章,会结合Java语言,实现简单的RocketMQ的功能的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

michaeldongd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值