RocketMq-01-基于IDEA单机部署服务

561 阅读2分钟

内容简介

  • 简单介绍rocketmq架构设计;
  • 基于idea本地搭建rocketmq服务,实现本地生产消费功能;
  • 通过部署rocketmq-console,搭建可视化管理端;

rocketmq的架构设计

rocketmq在架构上主要有四个部分,如上图所示(图中每个部分都是以集群模式部署):

  • NameServer:路由注册中心,支持动态注册和发现
    1. 主要保存topic的路由信息,可以简单理解为在nameServer上存储了topic和broker地址的映射关系;
    2. 为生产者或消费者提供topic对应的broker地址,供其发送或消费消息;
    3. 为broker提供注册接口注册自身路由信息,提供心跳接口检测broker存活状态;
  • Broker:主要负责消息存储、投递和查询;
  • Producer:消息生产者,向broker投递消息;
  • Consumer:消息消费者,从broker获取消息进行消费;

基于idea的服务启动流程

环境准备

服务启动流程

  • 启动NameServer
    1. 配置环境变量ROCKETMQ_HOME=你的文件路径/rocketmq/distribution;
    2. 找到org.apache.rocketmq.namesrv.NamesrvStartup启动main方法;
    3. 控制台打印出成功语句;
  • 启动Broker
    1. 除了配置ROCKETMQ_HOME外还需要配置一个NAMESRV_ADDR默认为localhost:9876;
    2. 找到org.apache.rocketmq.broker.BrokerStartup启动main方法;
    3. 控制台打印出成功语句;
  • 启动Consumer
    1. 找到org.apache.rocketmq.example.quickstart.Consumer;
    2. 如果你使用了自己的NAMESRV_ADDR则需要修改main方法中的代码,设置nameSrvAddr;
    3. 启动main方法,监听消息,如果有已经有未消费的消息,则会开始消费;
  • 启动Producer
    1. 找到org.apache.rocketmq.example.quickstart.Producer;
    2. 如果你使用了自己的NAMESRV_ADDR则需要修改main方法中的代码,设置nameSrvAddr;
    3. main中有for循环发送1000条消息,可以修改发送次数,启动main方法,则会向测试topic发送消息,如果已经启动了消费端则此时发送的消息会被消费;

启动流程中NameServer必须最先被启动,然后启动broker,将路由信息注册到NameServer中。随后的consmer和producer没有顺序要求;

部署可视化控制台

  1. 下载rocketmq-externals项目;
  2. 启动rocketmq-console模块;
  3. 访问localhost:8080(默认),即可看到rocketmq控制台,默认连接NameServerAddr=localhost:9876;

小结

至此本篇文章就结束了,主要是基于idea进行了mq本地服务的搭建,方便通过调试代码辅助对源码的学习,后续将会逐一介绍rocketmq的各个组件;