RocketMq相关基本概念与安装

RocketMq相关基本概念与安装

RocketMq: 一个低延迟、高可靠、可伸缩、易于使用的分布式消息中间件(消息队列),由Producer(负责生产消息)Broker(Broker 负责存储消息)Consumer( 负责消费消息) 。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Message Queue 用于存储消息,每个Topic中的消息存储于多个 Message Queue 中(相当于队列,一个topic可以对应多个Message Queue )。ConsumerGroup 由多个Consumer 实例构成。

  • 主题(Topic):表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。
  • 标签(Tag):用于同一主题下区分不同类型的消息。来自同一业务单元的消息,可以根据不同业务目的在同一主题下设置不同标签。有效地保持代码的清晰度和连贯性,并优化RocketMQ提供的查询系统。消费者可以根据Tag实现对不同子主题的不同消费逻辑,实现更好的扩展性。
  • 代理服务器(Broker Server):消息中转角色,负责存储消息、转发消息。代理服务器在RocketMQ系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。代理服务器也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。
  • 名字服务(Name Server):充当路由消息的提供者。生产者或消费者能够通过名字服务查找各主题相应的Broker IP列表。多个Namesrv实例组成集群,但相互独立,没有信息交换。
  • 生产者组(Producer Group):同一类Producer的集合,发送同一类消息且发送逻辑一致。如果发送的是事务消息且原始生产者在发送之后崩溃,则Broker服务器会联系同一生产者组的其他生产者实例以提交或回溯消费。
  • 消费者组(Consumer Group):同一类Consumer的集合,这类Consumer通常消费同一类消息且消费逻辑一致。消费者组使得在消息消费方面,实现负载均衡和容错的目标变得非常容易。消费者组的消费者实例必须订阅完全相同的TopicRocketMQ 支持两种消息模式:集群消费(Clustering)和广播消费(Broadcasting)。
  • 集群消费(Clustering):集群消费模式下,相同Consumer Group的每个Consumer实例平均分摊消息。
  • 广播消费(Broadcasting):广播消费模式下,相同Consumer Group的每个Consumer实例都接收全量的消息。
  • 普通顺序消息(Normal Ordered Message):同一个消费队列收到的消息是有顺序的,不同消息队列收到的消息则可能是无顺序的。
  • 严格顺序消息(Strictly Ordered Message):消费者收到的所有消息均是有顺序的。

简单Docker 部署 RocketMq 单Master模式

注意:这个是部署在公网的服务器上的,不是本地的机器

#查找mq
docker search rocketmq
#下载stars 最多的
docker pull rocketmqinc/rocketmq
#下载控制台
docker pull styletang/rocketmq-console-ng 

先创建docker的局域网,不然可能docker 容器直接无法通过网络交流

#创建网络
docker network create --subnet=172.24.0.0/16 --gateway=172.24.0.1 docker_net
#查看网络
docker network ls
#查看某个具体的网络以及某个容器的ip
docker network inspect docker_net

安装Name Server

# 9876是提供服务的端口 sh 是执行某个脚本mqnamesrv 是容器内的脚本名称 --network=docker_net 在某个局域网下
docker run --name mqnamesrv -p 9876:9876 --network=docker_net -d rocketmqinc/rocketmq sh mqnamesrv

安装brocker

#NAMESRV_ADDR=172.24.0.4:9876 是Name Server 的ip地址 映射了brocker.conf 因为不改的话,写的程序会报错
 docker run --name mqbrocker -p 10911:10911 -p 10909:10909 -e "NAMESRV_ADDR=172.24.0.4:9876" -v /home/rocketmq/brocker/brocker.conf:/opt/rocketmq-4.4.0/conf/brocker.conf --network=docker_net -d rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/brocker.conf

brocker.conf

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 =x.x.x.x

brokerIP1 =x.x.x.x 改成自己宿主机的ip 不是docker容器的ip

不然本地跑的会一直打印 你的rocketmq程序(指自己写的应用程序) close the connection to remote address[] result: true,其实也不一定是宿主机的ip ,只是相对应用程序的ip,如果在同一个局域网内,可以使用局域网的ip

安装控制台

#JAVA_OPTS 设置java的启动参数 -Dsever.port=8080 提供服务的端口 -Drocketmq.namesrv.addr=172.24.0.4:9876 Name Server 的ip地址
 docker run --name rocketmqconsole -p 8080:8080 -e "JAVA_OPTS=-Dsever.port=8080 -Drocketmq.namesrv.addr=172.24.0.4:9876" --network=docker_net -d styletang/rocketmq-console-ng      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值