RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装

news/2024/7/24 5:59:21 标签: rocketmq, 学习, linux

MQ 之间的对比

三种常用的 MQ 对比,ActiveMQ、Kafka、RocketMQ

性能方面:

  • 三种 MQ 吞吐量级别为:万,百万,十万
  • 消息发送时延:毫秒,毫秒,微秒
  • 可用性:主从,分布式,分布式

扩展性方面:

  • 水平伸缩能力:均支持
  • 技术栈:Java,Java/Scala,Java

功能维度方面:

  • 消息重试能力:均支持
  • 消息堆积能力:跟吞吐量成正相关,三种 MQ 分别为:弱,强,强
  • 消息过滤:支持,不支持,支持
  • 延迟消息:均支持
  • 消息回溯(用于消费者宕机恢复后,回溯到宕机前消费的位置):不支持,支持,支持

RocketMQ 领域模型

  • Topic:主题,可以理解为类别、分类的概念

  • MessageQueue:消息队列,存储数据的一个容器(队列索引数据),默认每个 Topic 下有 4 个队列被分配出来存储消息

  • Message:消息,真正携带信息的载体概念

  • Producer:生产者,负责发送消息

  • Consumer:消费者,负责消费消息

  • ConsumerGroup:众多消费者构成的整体或构成的集群,称之为消费者组

  • Subscription:订阅关系,消费者得知道自己需要消费哪个 Topic 下的哪个队列的数据

  • Message Queue:一个 Topic 下可以设置多个消息队列,发送消息的时候,RocketMQ 会轮询该 Topic 下的所有队列将消息发送出去(下图中 Broker 中 Topic 指向的 Q1、Q2、Q3、Q4 就是 MessageQueue)

  • Tag:对 Topic 的进一步细化

  • Broker:Broker 是 Rocket MQ 的主要角色,主要管理消息的存储、发送、查询等功能

  • Name Server:提供轻量级的服务发现,用于存储 Topic 和 Broker 关系信息

    主要功能:

    1. 接收 Broker 的注册,并提供心跳机制去检查 Broker 是否存活
    2. 路由管理,每个 nameserver 都有整个 Broker 集群的路由信息和客户端的查询队列

在这里插入图片描述

Rocket MQ 单机服务启动

RocketMQ 官方下载地址:https://rocketmq.apache.org/zh/download/

单机服务启动,选择二进制文件进行下载:

在这里插入图片描述

将二进制文件上传至服务器,进行解压:

# 安装 unzip 命令
yum install unzip
# 解压
unzip rocketmq-all-5.1.4-bin-release.zip

修改 RocketMQ 的 JVM 配置

原本分配的 JVM 堆内存太大,如果启动时分配的内存不足就会报错,需要修改 bin 目录下的:runbroker.shrunserver.sh 文件:

runbroker.sh 文件修改后的内容如下图:

在这里插入图片描述

runserver.sh 文件修改后的内容如下图:

在这里插入图片描述

配置 broker.conf 文件

conf/broker.conf 文件中追加如下内容:

brokerIP1=【填服务器的公网 ip 地址】
namesrvAddr=localhost:9876

linux__jdk__110">linux 安装 jdk 环境

rocketmq 是 java 写的,因此还需要安装 jdk 环境,并且有 JAVA_HOME 环境变量

安装 jdk 流程如下:

# 创建目录
mkdir /usr/lib/jvm
# 解压到 /usr/lib/jvm 目录下
tar -xvf jdk-8u144-linux-x64.tar.gz -C /usr/lib/jvm
# 配置环境变量,Linux 环境变量在 /etc/profile 中配置
vi /etc/profile
# 在结尾添加如下内容
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 激活修改的配置
source /etc/profile
# 检查安装的 jdk
java -version

启动

# 1.启动 nameserver, nohup 和 & 可以让程序在后台运行
nohup sh bin/mqnamesrv &
# 查看日志,判断是否启动成功
tail ‐f ~/logs/rocketmqlogs/namesrv.log
# 2023-12-15 15:17:10 INFO main - The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876
# 2.启动 broker,-n 是 nameserver 的地址
nohup sh bin/mqbroker -c conf/broker.conf ‐n localhost:9876 &
# 查看日志,判断是否启动成功
tail ‐f ~/logs/rocketmqlogs/broker.log
# 2023-12-15 15:17:56 INFO main - The broker[broker-a, 218.95.37.160:10911] boot success. serializeType=JSON and name server is localhost:9876

启动后,使用 jps 查看是否启动成功:
在这里插入图片描述

关闭命令

sh bin/mqshutdown broker
sh bin/mqshutdown namesrv

http://www.niftyadmin.cn/n/5266743.html

相关文章

autosar引入了Secure SOME/IP-ACL 有什么目的?如何实现的?

Secure SOME/IP-ACL 是一种基于 AUTOSAR 的安全机制,用于保护车载以太网上的 SOME/IP 通信。它的目的是防止未经授权的客户端或服务端访问或提供敏感的服务。 Secure SOME/IP-ACL 的实现主要依赖于两个模块: Secure Onboard Communication (SecOC) Sec…

51单片机控制1602LCD字符滚动三

51单片机控制1602LCD字符滚动三 1.概述 这篇文章介绍单片机控制1602LCD屏幕上的字符滚动显示 2.字符滚动 2.1.第一种方式 使用LCD内置指令设置整屏左移或者右移,在读入字符时每读一个字符都要有个延迟,否则会因为速度太快,看到屏幕上就是…

Crow:黑魔法 添加路由2 new_rule_tagged实现模板参数的绑定

Crow添加路由的定义: #define CROW_ROUTE(app, url) app.template route<crow::black_magic::get_parameter_tag(url)>(url) Crow:黑魔法get_parameter_tag-CSDN博客 介绍了get_parameter_tag的作用 route的定义为: auto route(std::string&& rule) -> …

三、Spring IoC 容器和核心概念

本章概要 组件和组件管理概念 什么是组件&#xff1f;我们的期待Spring充当组件管理角色&#xff08;IoC&#xff09;组件交给Spring管理优势 Spring IoC 容器和容器实现 普通和复杂容器SpringIoC 容器介绍SpringIoC 容器具体接口和实现类SpringIoC 容器管理配置方式 Spring I…

中伟视界:煤矿行业借力人工智能,防控灾害风险迈出新步伐 《“十四五”矿山安全生产规划》(应急(2022)64号),煤矿重大灾害风险防控系统

随着煤矿行业的发展&#xff0c;煤矿重大灾害风险防控成为了行业关注的重点之一。为了更好地预防和应对灾害风险&#xff0c;煤矿行业开始引入人工智能分析算法和检测场景&#xff0c;以提高灾害风险的识别和预警能力。 在煤矿的重大灾害风险防控中&#xff0c;AI算法发挥着重要…

基于3D-CGAN的跨模态MR脑肿瘤分割图像合成

3D CGAN BASED CROSS-MODALITY MR IMAGE SYNTHESIS FOR BRAIN TUMOR SEGMENTATION 基于3D-CGAN的跨模态MR脑肿瘤分割图像合成背景贡献实验方法Subject-specific local adaptive fusion&#xff08;针对特定主题的局部自适应融合&#xff09;Brain tumor segmentation model 损失…

《PySpark大数据分析实战》-04.了解Spark

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

【笔试强化】Day 3

一、单选 1. 正确答案&#xff1a;C子类继承父类&#xff0c;但是 name 被 private 修饰&#xff0c;不能访问 2. 正确答案&#xff1a;D父类构造了对象&#xff0c;但是子类没有使用 super调用&#xff0c;会报错 3. 正确答案&#xff1a;B构造方法可以重载 4. 正确答案&a…