訊息中介軟體 RocketMQ簡介

2021-09-11 13:55:18 字數 2880 閱讀 9361

apache rocketmq是一款具有低延遲,高效能和可靠性,數十億容量和靈活可擴充套件性的分布式訊息傳遞和流**平台。它由nameserver、broker、producer以及consumer四部分構成,如下圖所示:

所有的集群都具有水平擴充套件能力,無單點障礙。

nameserver是乙個功能齊全的伺服器,主要包含兩個功能:

因此,在啟動**和客戶端之前,需要提供名稱伺服器位址列表告訴他們如何訪問名稱伺服器。在apache rocketmq中,這可以通過四種方式詳情完成。

**伺服器負責訊息儲存和傳輸,訊息查詢,ha保證等。**伺服器有幾個重要的子模組,如下圖所示:

生產者將業務應用系統生成的訊息傳送給broker。 rocketmq提供了多種傳送模式:同步,非同步和單向。

相同角色的生產者被組織到一起。在事務提交後,生產組中的不同例項都可以連線broker執行提交或回滾事務,以防原生產者在提交後就掛掉。

警告:考慮到生產者有很強的訊息傳送能力,每個生產者組只允許有乙個例項用來避免不必要的初始化。

消費者從broker獲取訊息並將其提供給應用程式。從使用者應用的角度來看,提供了兩種型別的消費者:

具有完全相同角色的消費者被組合在一起並命名為消費者組,消費群體是乙個很好的概念,它在訊息消費方面實現負載平衡和容錯目標是非常容易的。

警告:消費者組的消費者例項必須具有完全相同的主題訂閱。

主題是生產者提供訊息和消費者提取訊息的類別。主題與生產者和消費者的關係非常鬆散,具體而言,乙個主題可能有零個,乙個或多個向其傳送訊息的生產者;相反,生產者可以傳送不同主題的資訊;從消費者的角度來看,乙個主題可能由零個,乙個或多個消費者群體訂閱。同樣,乙個消費群體可以訂閱乙個或多個主題,只要這個群體的例項保持其訂閱的一致性即可。

訊息是要傳遞的資訊。一條訊息必須有乙個主題,可以將其解釋為要傳送給您的信件的位址。一條訊息也可能有乙個可選標籤和額外的鍵值對。例如,您可以為訊息設定業務金鑰,並在broker上查詢訊息以在開發期間診斷問題。

主題被劃分為乙個或多個子主題這就是訊息佇列。

標籤可以理解為更細一級的主題,為使用者提供更靈活的查詢。使用標記,來自同一業務模組的具有不同目的的訊息可能具有相同的主題和不同的標記。標籤將有助於保持**的清潔和一致性,並且標籤還可以方便rocketmq提供的查詢系統。

broker是rocketmq系統的主要組成部分。它接收生產者傳送的訊息,儲存訊息並準備處理來自消費者的請求。它還儲存訊息相關的元資料,包括消費者組,消耗進度偏移和主題/佇列資訊。

名稱伺服器作為路由資訊提供者。生產者/消費者客戶端查詢主題以找到相應的broker列表。

當使用defaultmqpushconsumer時,你可能需要決定消費是順序的還是併發的。

download & build from release

>

unzip rocketmq-all-4.2.0-source-release.zip

>

cd rocketmq-all-4.2.0/

>

mvn -prelease-all -dskiptests clean install -u

>

cd distribution/target/apache-rocketmq

複製**

start name server

>

nohup sh bin/mqnamesrv &

>

tail -f ~/logs/rocketmqlogs/namesrv.log

the name server boot success...

複製**

start broker

>

nohup sh bin/mqbroker -n localhost:9876 &

>

tail -f ~/logs/rocketmqlogs/broker.log

the broker[%s, 172.30.30.233:10911] boot success...

複製**

send & receive messages

>

export namesrv_addr=localhost:9876

>

sh bin/tools.sh org.apache.rocketmq.example.quickstart.producer

sendresult [sendstatus=send_ok, msgid= ...

>

sh bin/tools.sh org.apache.rocketmq.example.quickstart.consumer

consumemessagethread_%

d receive new messages: [messageext...

複製**

shutdown servers

>

sh bin/mqshutdown broker

the mqbroker(36695) is running...

send shutdown request to mqbroker(36695) ok

>

sh bin/mqshutdown namesrv

the mqnamesrv(36664) is running...

send shutdown request to mqnamesrv(36664) ok

複製**

訊息中介軟體之RocketMQ

1.rocketmq的三種方式傳送訊息 可靠的同步,可靠的非同步和單向傳輸 1 同步傳送訊息 可靠的同步傳輸,適用於重要的簡訊通知等 2 非同步傳輸通常用於響應時間敏感的業務場景。3 以單向模式傳送訊息 單向傳輸用於需要中等可靠性的情況,例如日誌收集。2.初步了解訊息失敗重試機制 訊息失敗,無非涉及...

訊息中介軟體認知及RocketMQ

訊息中介軟體是目前網際網路服務常用的技術服務。訊息中介軟體為應用系統提供高效 靈活的訊息同步和非同步傳輸處理 儲存 可靠傳輸。在大規模分布式環境下確保訊息安全 可靠 高效送達。一 為什麼需要一款訊息中介軟體 使用訊息伺服器的目的通常是解耦 及錯峰流控。隨著網際網路 微架構 模式的興起,原有的企業級大...

訊息中介軟體 rocketMq 1

1.nameserver vs zk,比zk簡單,效能比較高,幾十rocketmq的大腦 高效,i o儲存,檔案順序讀寫,記憶體對映機制 容忍設計缺陷,mq中訊息只消費一次 冪等性問題 rocketmq自身不確保,交給客戶端去做 2.nameserver 和broker之間保持著長連線,預設是128...