阿里雲消息隊列


阿里消息隊列

參考阿里雲官網地址:
https://help.aliyun.com/document_detail/34411.html?spm=a2c4g.11186623.6.544.7fb547b1YCTghH

SpringBoot 整合開發
https://blog.csdn.net/qq_38011415/article/details/83386062

簡介

消息隊列(Message Queue,簡稱 MQ)是阿里巴巴集團自主研發的專業消息中間件。 產品基於高可用分布式集群技術,提供消息訂閱和發布、消息軌跡查詢、定時(延時)消息、資源統計、監控報警等一系列消息雲服務

優勢

 1)豐富的屬性配置支持普通隊列、延遲隊列、優先級隊列等多種隊列模式
2)支持海量並發
3)消息投遞保證(確保消息至少成功消費一次)
4)用戶資源隔離(接入阿里雲子賬戶,資源隔離,確保非法獲取)
5)分布式事物消息
6)消息日志管理(查看每一條消息的生命周期,重發等)
7)支持雲監控

名詞解釋

名稱 含義
Message 消息,消息隊列中信息傳遞的載體
Message ID 消息的全局唯一標識,由 MQ 系統自動生成,唯一標識某條消息
Message Key 消息的業務標識,由消息生產者(Producer)設置,唯一標識某個業務邏輯
Topic 消息主題,一級消息類型,通過 Topic 對消息進行分類
Tag 消息標簽,二級消息類型,用來進一步區分某個 Topic 下的消息分類
Producer 消息生產者,也稱為消息發布者,負責生產並發送消息
Producer ID 一類 Producer 的標識,這類 Producer 通常生產並發送一類消息,且發送邏輯一致
Consumer 消息消費者,也稱為消息訂閱者,負責接收並消費消息
Consumer ID 一類 Consumer 的標識,這類 Consumer 通常接收並消費一類消息,且消費邏輯一致
消息類型
1)普通消息
2)定時消息
3)延時消息
4)事物消息
5)順序消息
消費模式
參考:
https://help.aliyun.com/document_detail/43163.html?spm=a2c4g.11186623.6.552.b9f83036LmDbFc

  1. 集群消費
    一個 Consumer ID 所標識的所有 Consumer 平均分攤消費消息。例如某個 Topic 有 9 條消息,一個 Consumer ID 有 3 個 Consumer 實例,那么在集群消費模式下每個實例平均分攤,只消費其中的 3 條消息。
  2. 廣播消費
    一個 Consumer ID 所標識的所有 Consumer 都會各自消費某條消息一次。例如某個 Topic 有 9 條消息,一個 Consumer ID 有 3 個 Consumer 實例,那么在廣播消費模式下每個實例都會各自消費 9 條消息。
    快速入門
    參考
    https://help.aliyun.com/document_detail/34411.html?spm=a2c4g.11186623.6.544.19caa3cbBOFTKp

消息隊列首先需要有它的主題Topic,生產者producer,消費者consumer。其中主題與生產者的對應關系為N:1,主題與消費者的對應關系為N:N。依次創建三者:

開發指南

常量類PropertyKeyConst
名稱 類型 默認值 描述
AccessKey String 阿里雲賬號管理控制台中創建的 AccessKey,用於身份認證
SecretKey String 阿里雲賬號管理控制台中創建的 SecretKey,用於身份認證
OnsChannel String ALIYUN 用戶渠道,阿里雲:ALIYUN,聚石塔用戶為:CLOUD
ONSAddr String 設置 MQ TCP 協議接入點
NAMESRV_ADDR String 設置 Name Server 列表(不推薦),與 ONSAddr 二選一
ConsumerId String Consumer 實例的唯一ID,您在控制台創建的 Consumer ID
MessageModel String CLUSTERING 設置 Consumer 的消費模式,集群消費:CLUSTERING,廣播消費:BROADCASTING
ConsumeThreadNums String 64 消費線程數量
MaxReconsumeTimes String 16 設置消息消費失敗的最大重試次數
ConsumeTimeout String 1 BatchConsumer每次批量消費的最大消息數量,默認值為1,允許自定義范圍為[1, 32],實際消費數量可能小於該值
CheckImmunityTimeInSeconds String 30 設置事務消息第一次回查的最快時間,單位(秒)
shardingKey String 順序消息中用來計算不同分區的值
suspendTimeMillis String 3000 只適用於順序消息,設置消息消費失敗的重試間隔時間,單位(毫秒)

消息類Message

消息類,表示要發送的消息。一條合法的消息,應包含主題(Topic),消息體以及可選的標簽和業務標識。
注意:我們對每條消息的自定義鍵值對的長度沒有限制,但所有的自定義鍵值對,系統鍵值對序列化后,所占空間不能超過 32767 字節。
1)無參構造
默認方法,即創建消息對象
2)有參構造
(1) 語法:public Message(String topic, String tag, String key, byte body)
(2) 語法:public Message(String topic, String tags, byte body)
參數:
名稱 類型 描述
topic String 消息主題,最長不超過 255 個字符;由a-z、A-Z、0-9、中划線”-“以及下划線”_”構成
tags String 消息標簽,請使用合法標識符,盡量簡短且見名知意
key String 業務標識,一般加前綴用於區別
body byte 消息體,消息體長度默認不超過 4M,具體請參閱集群部署文檔描述注意:生產與消費的序列化規則
3) 主題(topic)
語法:public void setTopic(String topic) 設置主題
語法:public String getTopic() 獲取主題
4) 標簽(Tag)
語法:public void setTag(String tag) 設置標簽
語法:public String getTag() 獲取標簽
5) 消息(MsgId)
語法:public void setMsgID(String msgid) 設置消息ID
語法:public String getMsgID()獲取消息ID
6) 業務(Key)
語法:public void setKey(String key) 設置業務key
語法:public String getKey()獲取業務key
7) 消費重試次數(reconsumeTimes)
語法:public void setReconsumeTimes(int value)設置消息重試消費次數
語法:public int getReconsumeTimes()消息消費時,獲取消息已經被重試消費的次數
8) 定時消息開始投遞時間(startDeliverTime)
注:可用於延時
語法:public void setStartDeliverTime(long value)
設置消息的定時投遞時間(絕對時間),最大延遲時間為40天
語法:public long getStartDeliverTime()獲取定時消息開始投遞時間
9) 消息生產時間(bornTimestamp)
語法:public void setBornTimestamp(long value)設置消息的產生時間
語法:public long getBornTimestamp()獲取消息的生產時間
10) 產生消息的主機(bornHost)
語法:public void setBornHost(String value)設置生產消息的主機
語法:public String getBornHost()獲取產生消息的主機

  1. 自定義屬性值(userProperties)
    語法:public void putUserProperties(String key, String value)
    描述:添加用戶自定義屬性鍵值對; 該鍵值對在消費消費時可被獲取。
    參數:
    名稱 類型 描述
    key String 自定義屬性鍵
    value String 自定義屬性值
    返回值:無
    語法:public String getUserProperties(String key)
    描述:獲取用戶自定義屬性的值。
    參數:
    名稱 類型 描述
    key String 自定義屬性鍵
    返回值:
    類型 描述
    String 自定義屬性值

  2. 順序消息分區值(shardingKey)
    語法:public void setShardingKey(String value)
    設置順序消息中用來計算不同分區的值
    語法:public long getShardingKey() 獲取順序消息中用來計算不同分區的值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM