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