前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【RocketMq实战第一篇】-RocketMq下载与安装

【RocketMq实战第一篇】-RocketMq下载与安装

作者头像
胖虎
发布2019-06-26 17:21:47
2.1K0
发布2019-06-26 17:21:47
举报
文章被收录于专栏:晏霖晏霖

前言

本文讲解下载并安装单机版RocketMq,mac环境。

要求:

你们机器应该有如下三项

Linux/Unix/Mac 64bit JDK 1.8+; Maven 3.2.x

正文

介绍:

目前 RocketMQ 已经成为Apache 顶级项目 。 在阿里内部, RocketMQ 很好地服务了 集 团大大小小上千个应 用,在每年的双十一当天,更有不可思议的万亿级消息通过 RocketMQ 流转(在 2017 年的双十一当天,整个阿里巴巴集团通过 RocketMQ 流转的线上消息达到了 万亿级,峰值 TPS 达到 5600 万),在阿里大中台策略上发挥着举足轻重的作用 。

此外, RocketMQ 是使用 Java语言开发的,比起 Kafka 的 Scala语言和 RabbitMQ 的 Erlang 语 言,更容易找 到技术人员进行定制开发 。

1.RocketMQ 由四部分组成

发信者 ------------> Producer

收信者 -------------> Consumer

负责暂存 --------------> Broker

传输的邮局 -------------> NameServer

启动 RocketMQ 的顺序是先启动 NameServer,再启动 Broker,这时候消 息队列已 经可以提供服务了,想发送消息就使用 Producer来发送,想接收消息 就使用 Consumer来接收 。 很多应用程序既要发送,又要接收,可以启动多个Producer 和 Consumer 来发送多种消息,同时接收多种消息 。

2.rocketmq整体架构图(借鉴官方原图)

3.topic和broker、MessageQueue整体结构关系

图例解释:(这里只进行初步讲解,后续对具体的某个知识点具体详细总结,选读内容)

a、生产者和消费都是通过topic找到具体某大类消息类型进行消息的投递和消费,topic是rocketmq中一大类消息传递的桥梁

b、一个topic可以创建在一个broker上,也可以创建在多个broker上。如果消息创建在一个broker上那么消息会全部发送到指定的 broker中,一旦broker发生故障,那么当前topic对应的生产者和消费者是无法进行消息的投递和消费的,因此rocketmq提供了HA模式即高可用master-slave。

对当前brokerName进行下利用这主从配置,防止单点故障.一般数据量的情况种配置完全可以满足生产环境rocketmq的使用。但是消息数量达到一定程度的时候势必会对当前broker造成很大的压力,因此引出了另一种配置方式,一个topic配置在多个broker下面,多个broker共同完成消息的消费,分散broker的压力.

c、创建一个topic的时候会首先指定broker,然后指定broker下的读队列数量和写队列数量,还有当前topic的权限(2||4||6 ,2是写权限,4是读权限,6是读写权限)。我们可以理解为producer发送消息到设置好的MessageQueue中,单台broker的情况下MessageQueue是负载均衡的,一个topic的消息和负载的投递到不同的MessageQueue中,我们也可以在producer中指定发送到具体某个MessageQueue中。多个broker且集群模式下,MessageQueue是不共享的(当前broler只处理自己的MessageQueue),

而且从broker只负责读操作,并不负责写操作.只有主broker挂掉的时候从节电才会进行写操作.

d、ProcessQueue是MessageQueue的快照队列,在PushConsumer模式运行的情况下,每个MessageqQueue都会对应的创建一个ProcessQueue用具记录MessageQueue消息处理的快照。ProcessQueue对象中主要结构是一个TreeMap和一个读写锁,TreeMap中以MessageQueue的offset作为key,以消息内容的引用作为value,保存所有从MessageQueue中获取到但还没有被消费掉的消息.其中读写所控制着多个线程对于treeMap的访问.

4.那么RocketMq有什么用?

1.应用解藕

2.流量消峰:把一秒内下的订单分散成一段时间来处理,这时有些用户可 能在下单后十几秒才能收到下单成功的状态,但是也比不能下单的体验要好。

3.消息分发:数据的产生方只 需要把各自的数据写人一个消息队列即可 数据使用方根据各自需求订阅感兴 趣的数据,不同数据团队所订阅的数据可以重复也可以不重复,互不干扰,也 不必和数据产生方关联

除了上面列出的应用解棉、流量消峰、消息分发等功能外,消息队列还有保证最终一致性、方便动态扩容等功能。

下载安装

链接:http://rocketmq.apache.org/dowloading/releases/ 随便找一个 4.x版本的,笔者用的是4.3

也可以去阿帕奇官网下载,点红色的地方。

双击解压包

打开终端进入到rocketmq-all-4.3.0下 执行,过程大概一分多钟,安装完会看到你多了target文件夹

代码语言:javascript
复制
mvn -Prelease-all -DskipTests clean install -U

下面我对上面截图中最后一个目录进行解释:

LICENSE、 NOTICE 和 README.md 包括 一 些版权 声 明和功能说明信息;

benchmark里包括运行 benchmark程序的 shell脚本;

bin文件夹里含有各种使 用 RocketMQ 的 shell 脚本( Linux 平台)和 cmd 脚本( Windows 平台),比如 常用的启动 NameServer 的脚 本 mqnamesrv,启动 Broker 的脚本 mqbroker, 集 群管理脚本 mqadmin 等 ;

conf文件夹里有一些示例配置文件,包括三种方式的 broker配置文件、 logback 日志配置文件等,用户在写配置文件的时候,一般基 于这些示例配置文件,加上 自 己特殊的需求即可;

lib文件夹里包括 RocketMQ 各个模块编译成的 jar包,以及 RocketMQ 依赖的 一 些 jar包,比如 Netty、 commons-lang、 FastJSON 等 。

简单使用

启动 NameServer--传输的邮局

代码语言:javascript
复制
进入/Users/yanlin/Downloads/工具/rocketmq-all-4.3.0/distribution/target/apache-rocketmq
执行  nohup sh bin/mqnamesrv &
启动后查看日志  tail -f ~/logs/rocketmqlogs/namesrv.log

启动 Broker--负责暂存

代码语言:javascript
复制
启动  nohup sh bin/mqbroker -n localhost:9876 &
[2] 5928
查看日志 appending output to nohup.out

用命令行发送和接收消息

发送

代码语言:javascript
复制
rocketmq-all-4.3.0/distribution/target/apache-rocketmq 当前目录下
执行  export NAMESRV ADDR=localhost:9876
执行  sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
效果SendResult [sendStatus=SEND OK, msgid= 省略很多

接收

代码语言:javascript
复制
命令 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
效果 ConsumeMessageThread 主d Receive New Messages : [MessageExt 省略

关闭消息队列

消息队列被启动后,如果不主动关闭, 则 会一直在后台运行,占用系统资 源 。 我们有专 门用来关闭 NameServer 和 Broker 的命令 。

关闭 NameServer 和 Broker:

代码语言:javascript
复制
执行 sh bin/mqshutdown broker
效果 The mqbroker (36695) i s running ...
Send shutdown request to mqbroker (36695 ) OK
执行 sh bin/mqshutdown namesrv
效果 The mqnamesrv (36664) is running...
Send shutdown request t o mqnamesrv (36664) OK
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 晏霖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 介绍:
      • 下载安装
        • 简单使用
        相关产品与服务
        消息队列 CMQ 版
        消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档