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