当前位置: 首页 > article >正文

RocketMQ第二节(安装和模块详解)

目录

1:RocketMQ安装

1.1:下载安装包解压 

1.2:修改运行配置

1.3:运行RocketMQ

1.3.1:启动NameServer

 1.3.2:启动Broker

1.4:消息收发

1.5:服务关闭

2:RocketMQ模块介绍

2.1: 名字服务器 NameServer

2.2:代理服务器 Broker

2.3:生产者

2.4:消费者


 

1:RocketMQ安装

1.1:下载安装包解压 

在 RocketMQ · 官方网站 | RocketMQ 的官网下载安装包,分为4.x和5.x两个版本,这次使用4.x版本,rocketmq-all-4.9.4-bin-release.zip。将zip解压之后。

 

1.2:修改运行配置

因为Rocket的是Java开发的,实际上就是一个Java项目,Java项目运行的需要虚拟机内存。

 默认的NameServer(注册中心) JVM内存配置 -Xms4g -Xmx4g -Xmn2g

 默认的Broker(数据管道) JVM内存配置   -server -Xms8g -Xmx8g -Xmn4g

这两个内存都是很大的,如果服务器内存不够,启动不了,所以在启动之前务必根据自己的服务器内存大小,来重新配置一下。当然服务器配置足够高另说。

1.3:运行RocketMQ

1.3.1:启动NameServer

安装完RocketMQ包后,我们启动NameServer

### 启动namesrv
$ nohup sh bin/mqnamesrv &
 
### 验证namesrv是否启动成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

我们可以在namesrv.log 中看到 'The Name Server boot success..', 表示NameServer 已成功启动。

 1.3.2:启动Broker

### 先启动broker
$ nohup sh bin/mqbroker -n localhost:9876 &

### 验证broker是否启动成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
$ tail -f ~/logs/rocketmqlogs/Broker.log 
The broker[broker-a,192.169.1.2:10911] boot success...

NameServer成功启动后,我们启动Broker

1.4:消息收发

在进行消息收发之前,我们需要告诉客户端NameServer的地址,RocketMQ有多种方式在客户端中设置NameServer地址,这里我们利用环境变量NAMESRV_ADDR

发送消息
$ export NAMESRV_ADDR=localhost:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK, msgId= ...

接收消息
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...

1.5:服务关闭

完成实验后,我们可以通过以下方式关闭服务

$ sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

$ sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

 

2:RocketMQ模块介绍

在上边我们首先启动了NameServer,然后启动了broker。然后生产者发送消息,消费者接收消息。

2.1: 名字服务器 NameServer

NameServer的作用就是一个简单的Topic的路由注册中心,支持topic的注册和发现

主要包括两个功能:

        broker的管理,NameServer接受broker的单机或者集群信息注册信息,并且保存下来作为路由信息的基本数据,同时发送心跳检测机制,检测broker是否存活。

        路由信息管理,每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。生产者和消费者通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。

NameServer通常是多机器不是,他们之间不会进行互相通信,每一个broker启动的时候,都需要向NameServer注册自己的信息,所有每一个NameServer都保存了所有的broker信息,所以当某一个NameServer挂了,客户端仍然可以向其它NameServer获取路由信息。

2.2:代理服务器 Broker

代理服务器也是多机器部署的,他们的作用就是存储消息、查询消息、保证高可用。因为NameServer几乎无状态节点,因此可集群部署,节点之间无任何信息同步。Broker部署相对复杂。

在 Master-Slave 架构中,Broker 分为 Master 与 Slave。一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。Master 与 Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。

2.3:生产者

生产者是最简单的,跟broker是无状态链接,只需要向指定的topic种发送消息。Producer通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递,投递的过程支持快速失败和重试。

2.4:消费者

消费者消费需要和NameServer建立长连接,且定时向 Master、Slave发送心跳,定期获取topic中的路由信息。

消费者获取消息

支持以推(push),拉(pull)两种模式对消息进行消费。

同时也支持集群方式和广播方式的消费。

提供实时消息订阅机制,可以满足大多数用户的需求。


http://www.kler.cn/a/15160.html

相关文章:

  • docker--工作目录迁移
  • 掌握Golang中的数据竞争检测:runtime/race包全面教程
  • 京东 2025届秋招 自然语言处理
  • Springboot 整合 Java DL4J 打造金融风险评估系统
  • springboot如何获取控制层get和Post入参
  • 重构Action-cli前端脚手架
  • TCP分岔:优化云服务的性能
  • 入局生成式AI,看好亚马逊(AMZN)中期表现
  • Superset整合keycloak系统
  • linux平台移植qt
  • 浅谈欧拉定理及其扩展
  • 重写Qt中的Widget移动事件
  • 大好河山集团董事长黄国林受邀出席2023中国好公司高峰论坛暨产学研合作峰会
  • 快速理解哈希(Hash)表的运作原理
  • C++语言亚马逊国际获取AMAZON商品详情 API接口(
  • 7.3 股票分析(project)
  • Java中的try-with-resources语句
  • ctr特征重要性建模:FiBiNetFiBiNet++模型
  • P2224 [HNOI2001]产品加工(进程DP)
  • Cell Reports:任栓成/高东/胡志安/唐玲团队合作揭示压力性失眠发生的神经机制
  • SpringBoot -02 SpringBoot整合Mybatis、Druid数据源、单元测试、JSP
  • 最近部门新的00后真是卷王,工作没1年,入职18K
  • AlgoC++第六课:BP反向传播算法
  • SSL证书的五大优势
  • nssctf web
  • TOMCAT NGINX 环境的搭建脚本