zoukankan      html  css  js  c++  java
  • RocketMQ(4.7.0)单机与集群搭建,控制台搭建,并与springboot整合

    参考书籍: RocketMQ实战与原理解析: 作者杨开元

    一 单机部署

    亲测jdk11有问题,无法启动,最好用jdk8

    修改shell脚本:

    修改合适的内存:

    先启动NameServer再启动一个Broker:

    日志默认位置: ~/logs/rocketmqlogs

    测试:

    发送demo: sh tools.sh org.apache.rocketmq.example.quickstart.Producer
    接受demo: sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
    注意:每个窗口都必须先设置NAMESRV_ADDR,否则无法连接: export NAMESRV_ADDR=localhost:9876

    关闭

    sh mqshutdown namesrv
    sh mqshutdown broker

    二 集群部署

    先部署两台服务器到两个服务器上

    结构:

    服务器a,服务器b, 两个NameServer, 两个brokera,b,两台服务器互为主从,即服务器a上面有brokera和brokerb的salve

    修改配置文件

    位置: rocketmq-all-4.7.0/conf/2m-2s-async

    一台修改broker-a.properties broker-b-s.properties,即brokera的master和brokerb的salve,另一台反之:

    # NemeServer地址,可以有多个
    namesrvAddr=192.168.159.128:9876;192.168.159.129:9876
    # 集群名称
    brokerClusterName=DefaultCluster
    # broker名称,主从的名称相同表明相互关联,为同一个broker
    brokerName=broker-b
    # broker的id,一个master可以有多个slave,id为0表示主,大于0表示不同的从
    brokerId=0
    # 在几点做删除消息动作,比如04: 凌晨四点
    deleteWhen=04
    # 在磁盘保存消息的时长,超过会自动删除,在上面配置删除的时间点删除
    fileReservedTime=48
    # 角色有三种:
    #ASYNC_MASTER, 消息同步开始就返回成功状态
    #SYNC_MASTER  表示消息同步完成后再发送完成状态
    #SLAVE   从
    brokerRole=ASYNC_MASTER
    # 刷盘策略,同步和异步
    flushDiskType=ASYNC_FLUSH
    # 监听端口,一台机器上多个Broker要确保端口不冲突
    listenPort=10921
    # 存储消息以及一些配置信息的根目录
    storePathRootDir=/home/rocketmq/store-b
    

    启动

    先启动两个NameServer
    再启动四个Broker,后面用 -c 跟上对应的配置文件:
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties &
    注意: 端口一定要提前放开

    三 控制台搭建

    下载解压

    wget https://github.com/apache/rocketmq-externals/archive/master.zip
    解压 unzip

    编译打包

    之后进入目录: cd rocketmq-externals-master/rocketmq-console
    使用maven编译打包:
    mvn clean package
    注意: 如果报错就删除测试代码:
    rm src/test -rf #删除src 目录下的 test
    如果慢就编辑maven的setting,使用阿里云的镜像地址

    运行

    编译后找到target下面的jar包,其实是一个springboot项目,启动
    nohup java -jar rocketmq-console-ng-1.0.0.jar --server.port=8561 --rocketmq.config.namesrvAddr=a:9876;b:9876 &
    nohup 命令 & :后台启动,防止session或者退出,打断程序运行
    成功运行:

    四 springboot整合

    添加start依赖

    =implementation group: 'org.apache.rocketmq', name: 'rocketmq-spring-boot-starter', version: '2.0.4'

    yml配置

    rocketmq:
      name-server: 192.168.159.128:9876;192.168.159.129:9876
      producer:
        group: houzheng
        send-message-timeout: 30000
    

    producer

        // springboot会自动注入,可直接使用
        @Autowired
        RocketMQTemplate rocketMQTemplate;
    
        @GetMapping("send/{id}")
        public String send(@PathVariable("id") String id){
            rocketMQTemplate.send("test-topic-01",MessageBuilder.withPayload(new User(id,"侯征")).build());
            return "SUCESS";
        }
    

    consumer

    @Component
    @RocketMQMessageListener(topic = "test-topic-01", consumerGroup = "my-consumer_test-topic-01")
    public class UserConsumer implements RocketMQListener<User> {
        @Override
        public void onMessage(User message) {
            System.out.println("接受到消息:"+message.toString());
        }
    }
    

    测试


    五 docker快速部署

  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/houzheng/p/12801925.html
Copyright © 2011-2022 走看看