rocketmq入门

RocketMQ简介

1.RocketMQ是一款分布式、队列模型的消息中间件,是阿里巴巴集团自主研发的专业消息中间件,借鉴参考了JMS规范的MQ实现,更参考了优秀的开源消息中间件KAFKA,实现了业务消峰、分布式事务的优秀框架。

2.其底层代码编写清晰优秀,采用Netty NIO框架进行数据通信

3.摒弃了Zookeeper,内部使用更轻量级的NameServer进行网络路由,提高服务性能,并且支持消息失败重试机制。

4.天然支持集群模型,消费者负载均衡、水平扩展能力,支持广播模式和集群模式。

5.采用零拷贝的原理、顺序写盘、支持亿级消息堆积能力。

6.提供丰富的消息机制,如顺序消息、事务消息等

MQ基本概念:

Message:消息,消息队列中信息传递的载体。

Message ID:消息的全局唯一标识,由 MQ 系统自动生成,唯一标识某条消息。

Message Key:消息的业务标识,由消息生产者(Producer)设置,唯一标识某个业务逻辑。

Topic:消息主题,一级消息类型,通过 Topic 对消息进行分类。

Tag:消息标签,二级消息类型,用来进一步区分某个 Topic 下的消息分类。

Producer:消息生产者,也称为消息发布者,负责生产并发送消息。

Producer ID:一类 Producer 的标识,这类 Producer 通常生产并发送一类消息,且发送逻辑一致。

Consumer:消息消费者,也称为消息订阅者,负责接收并消费消息。

Consumer ID:一类 Consumer 的标识,这类 Consumer 通常接收并消费一类消息,且消费逻辑一致。

RocketMQ组件:

  • nameserver: 可以理解为是消息队列的协调者,Broker向它注册路由信息,同时Client向其获取路由信息,如果使用过Zookeeper,就比较容易理解了,但是功能比Zookeeper弱;
    NameServer本身是没有状态的,并且多个NameServer直接并没有通信,可以横向扩展多台,Broker会和每一台NameServer建立长连接;

  • Broker: Broker是RocketMQ的核心,提供了消息的接收,存储,拉取等功能,一般都需要保证Broker的高可用,所以会配置Broker Slave,当Master挂掉之后,Consumer然后可以消费Slave;
    Broker分为Master和Slave,一个Master可以对应多个Slave,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave;

  • Producer: 消息队列的生产者,需要与NameServer建立连接,从NameServer获取Topic路由信息,并向提供Topic服务的Broker Master建立连接;Producer无状态,看集群部署;

  • Consumer: 消息队列的消费者,同样与NameServer建立连接,从NameServer获取Topic路由信息,并向提供Topic服务的Broker Master,Slave建立连接;

命令行管理工具

mqadmin是RocketMQ自带的命令行管理工具,可以创建、修改Topic,查询消息,更新配置信息等操作

登录控制台:

首先进入RocketMQ工程,进入/RocketMQ/bin

在该目录下有个mqadmin脚本

查看帮助:

在mqadmin下可以查看有哪些命令

sh mqadmin

查看具体命令的使用

sh mqadmin help 命令名称

例如,查看updateTopic的使用

sh mqadmin help updateTopic

使用命令

以创建topic为例
指令 updateTopic

参数

-b 如果 -c为空,则必填 broker地址,表示topic建在该broker

-c 如果 -b为空,则必填 cluster名称,表示topic建在该集群(集群可通过clusterList查询)

-h 选填 打印帮助

-n 必填 nameserve服务地址列表,格式ip:port;ip:port;…

-p 选填 指定新topic的权限限制( W|R|WR )

-r 选填 可读队列数(默认为8)

-w 选填 可写队列数(默认为8)

-t 必填 topic名称

举例
在集群DefaultCluster上创建主题ZTEExample,nameserve地址为10.45.47.168:9876
sh mqadmin updateTopic –n 10.45.47.168 –c DefaultCluster –t ZTEExample

你可能感兴趣的:(架构,java,java,rocketmq,broker,nameserver)