Apache RocketMQ作為阿里開源的一款高性能、高吞吐量的分布式消息中間件。
支持Broker和Consumer端消息過濾,支持發布訂閱模型和點對點,支持拉pull和推push兩種消息模式,單一隊列百萬消息、億級消息堆積,支持單master節點,多master節點,多master多slave節點,任意一點都是高可用,水平拓展,Procer、Consumer、隊列都可以分布式,消息失敗重試機制、支持特定level的定時消息,新版本底層采用Netty,4.3.x支持分布式事務,適合金融類業務,高可用性跟蹤和審計功能。
Procer :消息生產者
Procer Group :消息生產者組,發送同類消息的一個消息生產組
Consumer :消費者
Consumer Group :消費同類消息的多個實例
Tag :標簽,子主題(二級分類)對topic的進一步細化,用于區分同一個主題下的不同業務的消息
Topic :主題, 如訂單類消息,queue是消息的物理管理單位,而topic是邏輯管理單位。一個topic下可以有多個queue,
默認自動創建是4個,手動創建是8個
Message :消息,每個message必須指定一個topic
Broker :MQ程序,接收生產的消息,提供給消費者消費的程序
Name Server :給生產和消費者提供路由信息,提供輕量級的服務發現、路由、元數據信息,可以多個部署,互相獨立(比zookeeper更輕量)
Offset : 偏移量,可以理解為消息進度
買粉絲mit log : 消息存儲會寫在Commit log文件里面
1、添加maven依賴
2、新建jms包,JMSConfig類,設置配置常量
3、新建生產者PayProcer
4、新建PayController
這個時候,啟動應用,訪問api/sync路徑,會報沒有這個topic異常
需要去管控臺手工創建topic,或者將SpringBoot依賴的RocketMQ版本與服務端RocketMQ的版本改成一樣的,也可以。例如我的pom.xml文件中,依賴的版本是4.3.0,而服務器上部署的RocketMQ版本是4.4.0,就不會自動創建topic。
創建topic之后,再次訪問訪問api/sync路徑,會報下面異常
在買粉絲nf/broker.買粉絲nf文件中添加如下配置
然后指定配置文件啟動Broker,返回上一級,然后重啟Broker
或者使用守護進程方式啟動Broker
再次訪問api/sync,返回成功
RocketMQ管控臺也可查詢此消息
新建PayConsumer
訪問: 買粉絲://localhost:8080/api/sync?text=test
控制臺打印: