rocketmq初步使用

本文档介绍了RocketMQ的基本概念,如NamerServer、BrokerServer、Producer和Consumer,并详细阐述了RocketMQ的安装步骤、常用命令以及Java示例。通过示例展示了如何配置、启动RocketMQ服务,创建Topic,发送和消费消息。
摘要由CSDN通过智能技术生成

rocketmq初步使用

一、简介

rocketmq是阿里开源的消息队列,突出特点支持消息事务。这里对rocketmq常规概念、安装、使用进行介绍。

二、知识点

2.1 官网文档
http://rocketmq.apache.org/docs/quick-start/
https://github.com/apache/rocketmq/tree/master/docs/cn
2.2 关键词
  • NamerServer:topic路由注册中心,用于路由消息,通过名字服务查找对应的broker ip列表。可构成集群,但相互独立,没有信息交换,每一个都有完整的路由信息,broker会向每一台NameServer注册自己的路由信息;
  • BrokerServer: 消息中转,负责消息的存储和转发。分为master和slave,master的brokerId为0,可以有多个slave;slave的brokerId为非0,只能对应一个master;
  • Producer:消息生产者
  • Consumer:消息消费;
  • Topic:主题,归纳一类消息;

备注:更多概念请查看https://github.com/apache/rocketmq/blob/master/docs/cn/concept.md

2.3 流程
  1. 启动NameServer,即是路由注册中心;
  2. 启动borker,与NamerServer建立长连接,通过心跳向NameServer注册Borker与Topic的映射关系;
  3. 创建Topic,指定Topic存储在哪些Broker上;
  4. 发送消息,Producer与NameServer建立长连接,从NameServer中获取Topic在哪些Borker上,然后与Broker建立连接,在Broker中选择队列发送消息;
  5. 消息消息,Consumer与NameServer建立长连接,从NameServer中获取Topic在哪些Borker上,然后与Broker建立连接,在Broker中选择队列消费消息;

备注:架构请参考https://github.com/apache/rocketmq/blob/master/docs/cn/architecture.md

三、安装

3.1 rocketmq安装

这里以安装 2主0从 为例,安装流程如下:

  1. 设置JAVA_HOME环境变量;

  2. 下载rocketmq安装包:

    wget https://mirrors.bfsu.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
    
  3. 解压及进入安装包:

    unzip rocketmq-all-4.7.1-bin-release.zip
    cd rocketmq-all-4.7.1-bin-release
    
  4. 修改conf/2m-noslave目录下的broker-a.properties和broker-b.properties文件,分别在两文件添加内容(用于在同一台机器上启动rocketmq)。
    broker-a.properties文件添加:

    #重新指定storePath路径
    storePathRootDir = storePath/broker-a
    #重新指定broker端口
    listenPort = 10921
    

    broker-b.properties文件添加:

    #重新指定storePath路径
    storePathRootDir = storePath/broker-b
    #重新指定broker端口
    listenPort = 10925
    
  5. 启动NameService,端口默认为9876:

    bin/mqnamesrv
    
  6. 启动2master,无slave模式:

    bin/mqbroker -n localhost:9876 -c conf/2m-noslave/broker-a.properties
    bin/mqbroker -n localhost:9876 -c conf/2m-noslave/broker-b.properties
    

    备注:
    启动单master,默认端口是10911,如下:

    bin/mqbroker -n localhost:9876
    

    另外还有:

    • 多master多slave同步双写,主备都写成功了才返回成功,服务可用性和数据可用性高
    • 多master多slave异步复制,主备有短暂延迟(毫秒级)
  7. 关闭

    bin/mqshutdown broke
    bin/mqshutdown namesrv
    
3.2 可视化工具rocketmq-console安装
  1. 下载rocketmq-console

    git clone https://github.com/apache/rocketmq-externals
    
  2. 修改rocketmq-console项目下的application.properties文件

    rocketmq.config.namesrvAddr=localhost:9876
    
  3. 启动rocketmq-console项目

  4. 浏览器查看:http://localhost:8080

四、常用命令

常用命令请参考https://github.com/apache/rocketmq/blob/master/docs/cn/operation.md,下面列出部分。
命令格式为:

bin/mqadmin  command -n localhost:9876
4.1 topic相关

command命令有:

updateTopic:创建或更新Topic
    -h:打印帮助
    -n:NameService服务地址,格式为 ip:port
    -b:Broker服务地址,格式为 ip:port
    -t:topic名称
    -r:可读队列数,默认为8
    -w:可写队列数,默认为8
    -c:集群名称

其它还有:

  • deleteTopic:删除Topic
  • topicList:查看Topic列表
  • topicStatus:查看Topic消息队列offset
  • topicRoute:查看Topic路由信息

示例如下:

#创建
bin/mqadmin updateTopic -n localhost:9876 -b localhost:10921 -t topicOne
#查看topic列表
bin/mqadmin topicList -n localhost:9876
#查看消息offset
bin/mqadmin topicStatus -n localhost:9876 -t topicOne
#查看路由
bin/mqadmin topicRoute -n localhost:9876 -t topicOne
4.2 消息相关
sendMessage:发送消息
-h 打印帮助
-n NameServer 服务地址,格式 ip:port
-t topic名称
-p body,消息体
-k keys
-c tags
-b BrokerName
-i queueId

其它还有consumeMessage(消费消息)等。

使用示例如下:

#发送消息
bin/mqadmin sendMessage -n localhost:9876 -t topicOne -b broker-a  -p "msg one"

五、java示例

这里介绍java中的简单示例。

5.1 添加maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值