springboot笔记24整合RocketMQ4.x


5、RocketMQ4.x消息队列介绍
    简介:阿里开源消息队列 RocketMQ4.x介绍和新概念讲解

    1、Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件
    2、特点
        1)在高压下1毫秒内响应延迟超过99.6%。
        2)适合金融类业务,高可用性跟踪和审计功能。
        3)支持发布订阅模型,和点对点
        4)支持拉pull和推push两种消息模式
        5)单一队列百万消息
        6)支持单master节点,多master节点,多master多slave节点
        ...
    3、概念
        Producer:消息生产者
        Producer Group:消息生产者组,发送同类消息的一个消息生产组

        Consumer:消费者
        Consumer Group:消费同个消息的多个实例

        Tag:标签,子主题(二级分类),用于区分同一个主题下的不同业务的消息

        Topic:主题
        Message:消息
        Broker:MQ程序,接收生产的消息,提供给消费者消费的程序
        Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现和路由        

    3、官网地址:http://rocketmq.apache.org/

    学习资源:
        1)http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/    
        2)https://www.jianshu.com/p/453c6e7ff81c










6、RocketMQ4.x本地快速部署
    简介:RocketMQ4.x本地快速部署

    1、安装前提条件(推荐)
        64bit OS, Linux/Unix/Mac
        64bit JDK 1.8+;

    2、快速开始 http://rocketmq.apache.org/docs/quick-start/
       下载安装包:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip

       路径:/Users/jack/Desktop/person/springboot/资料/第13章/第5课/rocketmq-all-4.2.0-bin-release/bin
    
    3、解压压缩包 
        1)进入bin目录,启动namesrv
             nohup sh mqnamesrv & 
        
        2) 查看日志 tail -f nohup.out

Java运行时环境的内存不足,无法继续,本机内存分配(mmap)未能映射8589934592字节,用于提交保留内存
解决办法,找到runserver.sh和runbroker.sh,编辑
JAVA_OPT=”${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”
改成如上就可以了


        结尾:The Name Server boot success. serializeType=JSON 表示启动成功
        
        3、启动broker   
            nohup sh mqbroker -n 127.0.0.1:9876 &

        4)、关闭nameserver broker执行的命令
            sh mqshutdown namesrv
            sh mqshutdown broker







7、RoekerMQ4.x可视化控制台讲解
    简介:RoekerMQ4.x可视化控制台讲解

        1、下载 https://github.com/apache/rocketmq-externals
        2、编译打包  mvn clean package -Dmaven.test.skip=true
        3、target目录 通过java -jar的方式运行
        
        4、无法连接获取broker信息
            1)修改配置文件,名称路由地址为 namesrvAddr,例如我本机为
            2)src/main/resources/application.properties
                rocketmq.config.namesrvAddr=192.168.0.101:9876
        
        5、默认端口 localhost:8080
        
        6、注意:
            在阿里云,腾讯云或者虚拟机,记得检查端口号和防火墙是否启动









8、Springboot2.x整合RocketMQ4.x实战上集
    简介:Springboot2.x整合RocketMQ4.x实战,加入相关依赖,开发生产者代码
    
    启动nameser和broker

    1、加入相关依赖
        <dependency>  
            <groupId>org.apache.rocketmq</groupId>  
            <artifactId>rocketmq-client</artifactId>  
            <version>${rocketmq.version}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.apache.rocketmq</groupId>  
            <artifactId>rocketmq-common</artifactId>  
            <version>${rocketmq.version}</version>  
        </dependency>  


    2、application.properties加入配置文件        
        # 消费者的组名
        apache.rocketmq.consumer.PushConsumer=orderConsumer
        # 生产者的组名
        apache.rocketmq.producer.producerGroup=Producer
        # NameServer地址
        apache.rocketmq.namesrvAddr=127.0.0.1:9876

    3、开发MsgProducer
         /**
         * 生产者的组名
         */
        @Value("${apache.rocketmq.producer.producerGroup}")
        private String producerGroup;

        /**
         * NameServer 地址
         */
        @Value("${apache.rocketmq.namesrvAddr}")
        private String namesrvAddr;

        private  DefaultMQProducer producer ;

            
        public DefaultMQProducer getProducer(){
            return this.producer;
        }
        
        @PostConstruct
        public void defaultMQProducer() {
            //生产者的组名
            producer = new DefaultMQProducer(producerGroup);
            //指定NameServer地址,多个地址以 ; 隔开
            //如 producer.setNamesrvAddr("192.168.100.141:9876;192.168.100.142:9876;192.168.100.149:9876"); 
            producer.setNamesrvAddr(namesrvAddr);
            producer.setVipChannelEnabled(false);
            
            try {
                /**
                 * Producer对象在使用之前必须要调用start初始化,只能初始化一次
                 */
                producer.start();

            } catch (Exception e) {
                e.printStackTrace();
            } 
            
            // producer.shutdown();  一般在应用上下文,关闭的时候进行关闭,用上下文监听器

        }





9、Springboot2.x整合RocketMQ4.x实战下集
    简介:Springboot2.x整合RocketMQ4.x实战,开发消费者代码,常见问题处理

    1、创建消费者


    问题:
        1、Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.17.42.1:10911> failed (生产者跟broker不在同一台服务器会报这个)

        2、com.alibaba.rocketmq.client.exception.MQClientException: Send [1] times, still failed, cost [1647]ms, Topic: TopicTest1, BrokersSent: [broker-a, null, null]

        3、org.apache.rocketmq.client.exception.MQClientException: Send [3] times, still failed, cost [497]ms, Topic: TopicTest, BrokersSent: [chenyaowudeMacBook-Air.local,     chenyaowudeMacBook-Air.local, chenyaowudeMacBook-Air.local]
        解决:多网卡问题处理
        1、设置producer:  producer.setVipChannelEnabled(false);
        2、编辑ROCKETMQ 配置文件:broker.conf(下列ip为自己的ip)
            namesrvAddr = 192.168.0.101:9876
            brokerIP1 = 192.168.0.101



        4、DESC: service not available now, maybe disk full, CL:
        解决:修改启动脚本runbroker.sh,在里面增加一句话即可:        
        JAVA_OPT="${JAVA_OPT} -Drocketmq.broker.diskSpaceWarningLevelRatio=0.98"
        (磁盘保护的百分比设置成98%,只有磁盘空间使用率达到98%时才拒绝接收producer消息)


        常见问题处理:
            https://blog.csdn.net/sqzhao/article/details/54834761
            https://blog.csdn.net/mayifan0/article/details/67633729
            https://blog.csdn.net/a906423355/article/details/78192828

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM