RocketMQ(一):基本概念和环境搭建

Spring源码系列文章

RocketMQ(一):基本概念和环境搭建


目录

  • 一、RocketMQ简介
  • 二、各个MQ产品的比较
  • 三、RocketMQ重要概念
    • 1、基本概念
    • 2、消息从发送到被消费的的流程
    • 3、生产和消费理解
  • 四、RocketMQ安装
    • 1、下载RocketMQ
    • 2、解压并配置环境变量
    • 3、修改nameServer的运行脚本-runserver.sh
    • 4、修改broker的运行脚本-runbroker.sh
    • 5、修改broker的配置文件
    • 6、启动nameSrv和broker
    • 7、Dashboard客户端控制台

一、RocketMQ简介

  • RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发
  • RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务

为什么要使用MQ?

  • 削峰限流:设置流程缓冲池,可以让后端系统按自身吞吐能力进行消费,不被冲垮
  • 异步:消息发送者可以发送一个消息而无需等待响应
  • 解耦:发送者和接收者不必了解对方,只需要确认消息,不必同时在线

MQ的执行流程

  • 发送者把消息发给消息服务器[MQ]
  • 消息服务器把消息存放在若干队列/主题中,在合适的时候,消息服务器会把消息转发给接受者
  • 在这个过程中,发送和接受是异步
  • 发送者可以和接受者一对一(互发微信),也可以一对多(微信订阅号)

在这里插入图片描述

二、各个MQ产品的比较

特性ActiveMQRabbitMQRocketMQKafka
开发语言javaerlangjavascala
吞吐量万级万级十万级十万级
延迟性ms级us级ms级ms级以内
功能特性性能一般 出现早
功能单一 吞吐量低
性能好 管理界面丰富
功能丰富 吞吐量一般
性能好 功能最丰富
吞吐量高
吞吐量最大 功能单一
应用大数据领域

三、RocketMQ重要概念

1、基本概念

  • Producer:消息的发送者,生产者;举例:发件人
  • Consumer:消息接收者,消费者;举例:收件人
  • Broker:暂存和传输消息的通道;举例:快递
  • NameServer:管理Broker;举例:各个快递公司的管理机构 相当于broker的注册中心
  • Queue:队列,消息存放的位置,一个Broker中可以有多个队列
  • Topic:主题,消息的分类
  • ProducerGroup:生产者组
  • ConsumerGroup:消费者组,多个消费者组可以同时消费一个主题的消息

2、消息从发送到被消费的的流程

  • Producer询问NameServer
  • NameServer分配一个broker 然后Consumer也要询问NameServer
  • 得到一个具体的broker,然后消费消息

在这里插入图片描述

3、生产和消费理解

  • 消息会被投递(或者消费者主动拉去)给每一个消费者组
  • 在每一个组内是进行负裁均衡还是广播模式,是看这个消费者组的配置

在这里插入图片描述

四、RocketMQ安装

1、下载RocketMQ

下载地址:https://rocketmq.apache.org/dowloading/releases/

  • RecketMQ服务端

在这里插入图片描述

  • RecketMQ客户端

在这里插入图片描述

2、解压并配置环境变量

在这里插入图片描述

环境变量设置NameServer的ip地址

# RocketMQ
export NAMESRV_ADDR=localhost:9876

3、修改nameServer的运行脚本-runserver.sh

进入bin目录下,修改runserver.sh文件,将71行和76行的Xms和Xmx等改小一点

在这里插入图片描述

4、修改broker的运行脚本-runbroker.sh

进入bin目录下,修改runbroker.sh文件,修改67行

在这里插入图片描述

5、修改broker的配置文件

进入conf目录下,修改broker.conf文件

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

# 添加配置
namesrvAddr=localhost:9876
autoCreateTopicEnable=true
brokerIP1=localhost
  • namesrvAddr:可以写localhost因为nameSrv和broker在一个服务器
  • autoCreateTopicEnable:自动创建主题,不然需要手动创建出来
  • brokerIP1:broker的ip地址

6、启动nameSrv和broker

  • 首先在安装目录下创建一个logs文件夹,用于存放日志

在这里插入图片描述

  • 启动nameSrv
nohup sh bin/mqnamesrv > logs/namesrv.log &
  • 启动broker 这里的-c是指定使用的配置文件
nohup sh bin/mqbroker -c conf/broker.conf > logs/broker.log &
  • 查看结果

在这里插入图片描述

7、Dashboard客户端控制台

  • 第一步中下载客户端是rocketmq-dashboard-1.0.0压缩包
  • 在rocketmq-dashboard-1.0.0\src\main\resources下的文件application.properties中进行配置的修改

在这里插入图片描述

  • 在rocketmq-dashboard-1.0.0\pom.xml这个文件所在的目录下执行Maven打包命令
mvn clean package -Dmaven.test.skip=true
  • 打包完后会新生成一个文件夹target,获取可执行jar

在这里插入图片描述

  • 将jar包复制到mq的安装目录下,指定namesrv地址、端口、日志位置
nohup java -jar rocketmq-dashboard-1.0.0.jar --server.port=9999 rocketmq.config.namesrvAddr=127.0.0.1:9876 > logs/dashboard.log &
  • 浏览器访问http://localhost:9999/

在这里插入图片描述

  • 杀mq进程(namesrv、broker、dashboard)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/132765.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微软和Red Hat合体:帮助企业更方便部署容器

早在2015年,微软就已经和Red Hat达成合作共同为企业市场开发基于云端的解决方案。时隔两年双方在企业市场的多个方面开展更紧密的合作,今天两家公司再次宣布帮助企业更方便地部署容器。 双方所开展的合作包括在微软Azure上部署Red Hat OpenShift&#xf…

学习c#的第四天

目录 C# 变量 C# 中的变量定义与初始化 接受来自用户的值 C# 中的 Lvalues 和 Rvalues 不同类型变量进行运算 静态变量 局部变量 C# 常量 整数常量 浮点常量 字符常量 字符串常量 定义常量 扩展知识 Convert.ToDouble 与 Double.Parse 的区别 静态常量和动态常…

Vue中的常用指令v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model

前言 持续学习总结输出中,Vue中的常用指令v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model 概念:指令(Directives)是Vue提供的带有 v- 前缀 的特殊标签属性。可以提高操作 DOM 的效率。 vue 中的指令按照不…

Hadoop入门——数据分析基本步骤

文章目录 1.概述2.分析步骤2.1第一步 明确分析目的和思路2.2第二步 数据收集2.3第三步 数据处理2.4第四步 数据分析2.5第五步 数据展现2.6第六步 报告撰写 3.总结 1.概述 2.分析步骤 2.1第一步 明确分析目的和思路 2.2第二步 数据收集 2.3第三步 数据处理 2.4第四步 数据分析 …

Java Web——HTTP协议

目录 1. HTTP协议概述 1.1. HTTP数据传输格式 1.2. HTTP协议特点 2. HTTP 1.0和HTTP 1.1 3. HTTP请求协议 3.1. GET方式请求协议 3.2. POST方式请求协议 3.3. GET请求和POST请求的区别 4. HTTP相应协议 4.1. 响应状态码 如果两个国家进行会晤需要遵守一定的礼节。所以…

ConcurrentHashMap详解

要避免 HashMap 的线程安全问题,有多个解决方法,比如改用 HashTable 或者 Collections.synchronizedMap() 方法。 但是这两者都有一个问题,就是性能,无论读还是写,他们两个都会给整个集合加锁,导致同一时间…

顺序图——画法详解

百度百科的定义: 顺序图是将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时&…

逐步学习 Swagger enum:从入门到精通

enum 是 Swagger 规范中用来定义枚举类型的一种方式。它允许开发者在 API 文档中明确列出该接口的参数、返回值或请求体中可接受的枚举值。通过使用 Swagger enum,开发者可以更清晰地描述 API 的输入和输出,提高 API 文档的可读性和可维护性。 enum 使用…

ROS 多级tf坐标转换

题目 现有一移动机器人,该机器人的基坐标系为“base_link”,机器人包含3个子坐标系分别为“joint1”,“joint2”,“joint3”。 要求:利用多坐标转换,实现joint1下的坐标向joint2下的坐标转换,…

YOLOv8-seg改进:复现HIC-YOLOv5,HIC-YOLOv8-seg助力小目标分割

🚀🚀🚀本文改进:HIC-YOLOv8-seg:1)添加一个针对小物体的额外预测头,以提供更高分辨率的特征图2)在backbone和neck之间采用involution block来增加特征图的通道信息;3)在主干网末端加入 CBAM 的注意力机制; 🚀🚀🚀HIC-YOLOv8-seg小目标分割检测&复杂场景…

find和grep命令的简单使用

find和grep命令的简单使用 一、find例子--不同条件查找 二、grep正则表达式的简单说明例子--简单文本查找例子--结合管道进行查找 一、find find 命令在指定的目录下查找对应的文件。 find [path] [expression]● path 是要查找的目录路径,可以是一个目录或文件名…

Vue3-组合式API下的父传子和子传父

组合式API下的父传子 基本思想: 1.父组件中给子组件绑定组件 2.子组件内部通过props选项接收 const propsdefineProps({属性名:类型}) 由于script上写了setup,所以无法直接配置props选项,所以需要借助于“编译器宏”函数接收传递的数据 …

GPT4 Turbo 究竟更新了什么

GPT4 Turbo 究竟更新了什么 记忆力和上下文理解能力增强 现在的GPT4可以理解128K的文本,相当于几百页的内容,你的GPT4再也不会忘记你之前说的什么了,换句话说之前他只能记住一篇文章,而现在可以记住一整本书的内容了 API降价 输入…

基于FANUC工业机器人的坐标系转换、多视角拼接与三维重建

0.简介 总体任务:机械臂末端安装三维相机,绕着工件进行拍摄,并在计算机中将每次拍摄的点云合并在同一个坐标系下,从而获得更加完整全面的点云。机械臂:FANAUC相机:梅卡曼德技术方案:使用相机外…

零代码+分布式微服务架构打造新一代一站式服务集成平台

目 录 01 项目背景 02 普元ESB产品介绍 03 新版本功能特性 04 应用案例‍‍‍‍ 05 展望与发展 01 项目背景 企业在实现数字化转型的过程中,随着信息化程度的提高,越来越多的企业开始采用微服务架构来构建自己的业务系统,各种系统之间的集成、数据共享…

k8s上对Pod的管理部分详解

目录 一.Pod结构介绍 1.user container 2.pause 二.Pod工作形式介绍 1.自主式pod 2.控制器管理下的pod 三.对Pod的操作介绍 1.run/apply -f/create -f运行pod 2.get查看pod信息 3.exec操作运行中的pod (1)进入运行中的pod (2&…

Linux RPM包安装、卸载和升级

我们以安装 apache 程序为例。因为后续章节还会介绍使用源码包的方式安装 apache 程序,读者可以直观地感受到源码包和 RPM 包的区别。 RPM包默认安装路径 通常情况下,RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散安装到表 1 所…

阿里云付费用户破100万 用户规模亚洲最大

导读阿里巴巴集团公布2018财年第一季度财报,阿里云达到一个重要里程碑,云计算付费用户数量首次超过100万,成为亚洲首家达到百万级用户规模的云计算公司。同时,企业级市场被云计算人工智能等新技术全面激活,推动该季度营…

Stable Diffusion:最先进的文本生成图像模型

稳定扩散 生成式 AI 技术正在迅速发展,现在可以简单地根据文本输入生成文本和图像。Stable Diffusion 是一种文本到图像模型,使您能够创建逼真的应用程序。 扩散模型通过学习去除添加到真实图像中的噪声进行训练。这种降噪过程会产生逼真的图像。这些模…

【研究】Splunk 字段是否被加工过

1: 背景: 最近用户有个疑问,就是有些字段的输出有点问题,不确定是否被加工过。 2: 查找问题: index=abc sourcetype=def123 发现字段: city_shanghai 的输出可能有点问题。 3: 排查问题: 先去这个splunk search head cluster 的页面: server 的查找如下: 登入so1 s…