RocketMQ安装使用及基本原理

前言

RocketMQ官网
RocketMQ是阿里巴巴基于Kafka所做的消息中间件。

安装

单机安装

1、下载zip包
2、unzip rocketmq-all-4.8.0-bin-release.zip
3、进入bin目录普通启动./mynamesrv ./mqbroker
后台模式启动

#需要先启动Name Server(注册中心)
nohup ./rocketmq-all-4.8.0-bin-release/bin/mqnamesrv > /dev/null 2>1 &
#需要指定Server地址用于注册
nohup ./rocketmq-all-4.8.0-bin-release/bin/mqbroker -n (本机ip):9876 autoCreateTopicEnable=true > /dev/null 2>1 &

查看服务 ps -ef|grep mq
测试发消息和接受消息服务是否成功
bin目录下执行sh tools.sh org.apache.rocketmq.example.quickstart.Producersh tools.sh org.apache.rocketmq.example.quickstart.Consumer

注:环境中必须有JDK且JDK必须是1.8以上

RocketMQ配置默认是生产环境配置,设置的jvm的内存值较大,如果想修改默认值可以找runserver.sh和runbroker.sh文件,编辑
JAVA_OPT=”${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -
XX:MaxMetaspaceSize=320m”

配置/etc/profile文件添加export NAMESRV_ADDR=(本机ip):9876
刷新配置source /etc/profile

docker安装

#搜索有哪些docker容器可以使用,这里选择docker.io/foxiswho/rocketmq 4.5.1版本
docker search rocketmq
docker pull foxiswho/rocketmq:broker-4.5.1
docker pull foxiswho/rocketmq:server-4.5.1
#创建server
docker run -di -p 9876:9876 --name=rmqserver01 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" foxiswho/rocketmq:server-4.5.1
#创建broker
docker run -di -p 10911:10911 -p 10909:10909 --name=rmqbroker01 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" foxiswho/rocketmq:broker-4.5.1
#配置broker
#docker inspect rmqbroker #查看ipaddress 不用
docker exec -it rmqbroker01 /bin/bash
cd /etc/rocketmq/
vim broker.conf

#添加如下
#brokerIP1 = [ipaddress地址] 不用
brokerIP1 = [本机的ip]
namesrvAddr = [本机的ip]

docker下RocketMQ管理工具安装

#拉取镜像
docker pull styletang/rocketmq-console-ng:1.0.0
#创建并启动容器
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=[namesrvAddr地址]:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t styletang/rocketmq-console-ng:1.0.0

可以在ip:8082进行访问
在这里插入图片描述

RocketMQ

**MQ(Message Queue)**消息队列是基础数据结构中先进先出的数据结构。在消息传输过程中保存消息的容器,使生产者和消费者不直接通讯,依靠队列保证消息的可靠性,避免系统间相互影响。
producer->queue->consumer

MQ作用及缺点

一、作用
异步解耦,削峰填谷
1、异步解耦
订单系统与支付、库存、物流系统的联系,中间添加MQ,各个子系统用松耦合方式通信,当某个系统宕机后,(服务降级),其他系统依然可以使用。即是异步解耦
2、削峰填谷
在高并发情况下使请求进行排队等待,保证系统的稳定性。
3、其他
顺序收发
分布式事务一致性
大数据分析
分布式缓存同步

二、缺点
不能完全代替RPC
系统可用性降低
系统的复杂度提高
一致性问题

MQ相关产品

业界的MQ有Kafka、RabbitMQ、ActiveMQ、ApachePulsar

特性 ActiveMQ RabbitMQ RocketMQ Kafka
开发语言 java erlang java scala
吞吐量 万级 万级 十万级 十万级
时效性 毫秒级 微秒级 毫秒级 毫秒级
可用性 高,基于主从架构 高,基于主从架构 非常高,基于分布式架构 非常高,分布式架构
消息可靠性 有较低概率丢失 经过参数优化,可以零丢失 经过参数优化,可以零丢失
客户端语言 Java、c++、python java java、c++、go、python
应用 用于解耦和异步,较少用于大规模吞吐 都有使用 用于大规模吞吐、复杂业务中 在大数据的实时计算和日志采集中被大规模使用,是业界标准
消息方式 RocketMQ RabbitMQ Kafka
顺序消息 支持 支持 支持
延时消息 不支持 只支持特定Level 不支持
事务消息 不支持 支持 不支持
消息过滤 不支持 支持 支持
消息查询 不支持 支持 不支持
消息失败重试 支持 支持 不支持
批量发送 不支持 支持 支持

总结:
只普通使用推荐RabbitMQ
在阿里云部署或想自主改造MQ推荐RocketMQ
大数据、日志、流式推荐Kafka

生产者发送消息的方式

一、普通消息

1、同步
发送完消息后接受返回成功或失败的结果,在接收结果前进行等待同步
2、异步
发送完消息后会接收结果,但不影响继续运行
底层new Runnable进行执行任务
3、单向
发完消息后不接收返回结果

发送方式 发送TPS 发送结果反馈 可靠性
同步发送 不丢失
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值