RocketMQ入门

目录

 

 

1、JMS消息服务和使用场景

2、消息中间件常见概念和编程模型

3、主流消息队列和技术选型

4、阿里巴巴开源RocketMQ4.x消息队列介绍

特点

概念

5、RocketMQ4.x本地快速部署

内存不足的问题解决方法


 

1、JMS消息服务和使用场景

什么是JMS: Java消息服务(Java Message Service),Java平台中关于面向消息中间件的接口
JMS是一种与厂商无关的 API,用来访问消息收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API

使用场景:
核心应用
          解耦:订单系统-》物流系统
          异步:用户注册-》发送邮件,初始化信息
          削峰:秒杀、日志处理
          跨平台 、多语言
          分布式事务、最终一致性
          RPC调用上下游对接,数据源变动->通知下属


2、消息中间件常见概念和编程模型

常见概念


               JMS提供者:连接面向消息中间件的,JMS接口的一个实现,RocketMQ,ActiveMQ,Kafka等等
               JMS生产者(Message Producer):生产消息的服务
               JMS消费者(Message Consumer):消费消息的服务
               JMS消息:数据对象
               JMS队列:存储待消费消息的区域
               JMS主题:一种支持发送消息给多个订阅者的机制(某一个主题)
               JMS消息通常有两种类型:点对点(Point-to-Point) 只能消费一次、发布/订阅(Publish/Subscribe)

基础编程模型

              MQ中需要用的一些类
              ConnectionFactory :连接工厂,JMS 用它创建连接
              Connection :JMS 客户端到JMS Provider 的连接
              Session: 一个发送或接收消息的线程
              Destination :消息的目的地;消息发送给谁.
              MessageConsumer / MessageProducer: 消息消费者,消息生产者


3、主流消息队列和技术选型

Apache ActiveMQ、Kafka、RabbitMQ、RocketMQ


ActiveMQ:http://activemq.apache.org/
Apache出品,历史悠久,支持多种语言的客户端和协议,支持多种语言Java, .NET, C++ 等,基于JMS Provider的实现
缺点:吞吐量不高,多队列的时候性能下降,存在消息丢失的情况,比较少大规模使用


Kafka:http://kafka.apache.org/
是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理大规模的网站中的所有动作流数据(网页浏览,搜索和其他用户的行动,大数据中用的广,采集用户的行为,将信息存到消息队列中进行暂存),副本集机制,实现数据冗余,保障数据尽量不丢失;支持多个生产者和消费者
缺点:不支持批量和广播消息,运维难度大,文档比较少, 需要掌握Scala


RabbitMQ:http://www.rabbitmq.com/
是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不错
缺点:使用Erlang开发,阅读和修改源码难度大


RocketMQ:http://rocketmq.apache.org/
阿里开源的一款的消息中间件, 纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点, 性能强劲(零拷贝技术),支持海量堆积, 支持指定次数和时间间隔的失败消息重发,支持consumer端tag过滤、延迟消息等,在阿里内部进行大规模使用,适合在电商,互联网金融等领域使用


4、阿里巴巴开源RocketMQ4.x消息队列介绍

Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件

特点


支持Broker和Consumer端消息过滤
支持发布订阅模型,和点对点,
支持拉pull和推push两种消息模式
单一队列百万消息、亿级消息堆积
支持单master节点,多master节点,多master多slave节点
任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
消息失败重试机制、支持特定level的定时消息
新版本底层采用Netty
4.3.x支持分布式事务
适合金融类业务,高可用性跟踪和审计功能。

 

概念


Producer:消息生产者
Producer Group:消息生产者组,发送同类消息的一个消息生产组
Consumer:消费者
Consumer Group:消费同类消息的多个实例
Tag:标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
Topic:主题, 如订单类消息,queue是消息的物理管理单位,而topic是逻辑管理单位。一个topic下可以有多个queue,默认自动创建是4个,手动创建是8个
Message:消息,每个message必须指定一个topic
Broker:MQ程序,接收生产的消息,提供给消费者消费的程序
Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
Offset: 偏移量,可以理解为消息进度
commit log: 消息存储会写在Commit log文件里面

走读官网地址,学会如何学习新技术 http://rocketmq.apache.org/

学习资源
http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/
https://www.jianshu.com/p/453c6e7ff81c


5、RocketMQ4.x本地快速部署


安装前提条件(推荐) 64bit OS, Linux/Unix/Mac (Windows不兼容) 64bit JDK 1.8+;
快速开始 http://rocketmq.apache.org/docs/quick-start/

下载安装包:http://mirror.bit.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-source-release.zip

通过源码的方式进行下载:
 

unzip rocketmq-all-4.4.0-source-release.zip
cd rocketmq-all-4.4.0/
//下载该项目所有的依赖包
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/apache-rocketmq
最终路径 rocketmq-all-4.4.0/distribution/target/apache-rocketmq

在解压时没有unzip命令

安装unzip

yum install -y unzip zip

最新版本部署存在问题:
Please set the JAVA_HOME variable in your environment, We need java(x64)
解决:本地需要配置 JAVA_HOME 使用命令 vim ~/.bash_profile

JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home"
export JAVA_HOME
CLASS_PATH="$JAVA_HOME/lib"
PATH=".$PATH:$JAVA_HOME/bin"

解压压缩包

启动nameServer

 nohup sh bin/mqnamesrv &

查看日志 tail -f nohup.out (结尾:The Name Server boot success. serializeType=JSON 表示启动成功)

启动broker (-n指定nameserver地址,nameserver服务端口为9876, broker默认端口 10911)
 

nohup sh bin/mqbroker -n localhost:9876 &

关闭nameserver broker执行的命令

sh bin/mqshutdown broker
sh bin/mqshutdown namesrv        (服务发现)

使用 jps查看进程


 
 验证是否成功

#设置名称服务地址
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...

内存不足的问题解决方法


修改默认的配置文件:rocketmq的默认的runserver.sh 和runbroker.sh。需要修改默认的配。

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" 

3.x

export rocketmq=/usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
export PATH=$PATH:$rocketmq/bin
ROCKET_HOME=/usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智达教育‍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值