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)两种模式对消息进行消费。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值