XXL-MQ v1.2.0,分佈式消息隊列

Release Notes

  • 一、client端與Broker長鏈初始化優化,防止重複建立鏈接。
  • 二、POM多項依賴升級;
  • 三、UI組件升級;
  • 四、規範項目目錄結構;
  • 六、超時控制;
  • 五、通信遷移至 xxl-rpc;
  • 六、除了springboot類型示例;新增無框架示例項目 "xxl-mq-samples-frameless"。不依賴第三方框架,只需main方法便可啓動運行;
  • 七、消息生產,兼容「異步批量多線程生產」+「同步生產」兩種方式,提高消息發送性能;
  • 八、底層通信全異步化:消息新增 + 消息新增接受 + 消息回調 + 消息回調接受;僅批量PULL消息與鎖消息非異步;
  • 九、串行消費優化,舊版本固定第一臺消費,致使其壓力過大;新版支持自定義shardingId從而實現串行消息的負載均衡,緩解單臺壓力;
  • 十、廣播消息優化,舊版本不支持消息持久化,新版本支持消息持久化,並且廣播支持與串行結合實用,更加靈活;
  • 十一、併發消息、串行消息、廣播消息所有優化重構,底層邏輯統一,方便後續維護擴展;html

    • 串行:取消ZK依賴,廢棄舊版ZK鎖方式;優化爲經過消息 shardingId 結合消費者排序取模方式;相同 shardingId 的消息將會固定被同一個消費者消費;
    • 並行:沿用舊版消費者排序取模方式,不過取模參數新增支持 shardingId 參數;確保消息平均分配給在線消費者;
    • 廣播:取消ZK依賴,廢棄舊版ZK方式;優化爲經過消息 group 屬性羣發方式;每一個group都會消費該消息,但相同group下消息僅被消費一次;
  • 十二、Broker服務支持自定義指定註冊IP等信息,位置 "XxlMqBrokerImpl.initServer";
  • 1三、Topic自動發現:消息中心支持動態發現Topic,並展現在消息主題列表,延時1min;
  • 1四、運行報表:支持展現在線業務線、消息主題、消息記錄等信息、可在線查看消息日期分佈圖,成功分佈圖等;
  • 1五、業務線管理:支持設置業務線,用於分組管理消息主題;
  • 1六、消息主題管理:支持在線管理消息主題,自動發現消息主題;並支持完善消息主題擴展信息,如業務線、負責人、告警郵箱等;
  • 1七、消息記錄界面,交互優化重構,進一步優化消息篩選、管理交互;
  • 1八、自動重試優化,任務重試時,生效時間重置爲1min以後,重試次數減一;
  • 1九、記住密碼功能優化,選中時永久記住;非選中時關閉瀏覽器即登出;
  • 20、事務開關:支持設置消息事務開關,開啓時事務保證消息精準消費一次;未開啓時小几率存在重複消費,僅依靠註冊中心分片檢測避免重複,但性能略高;
  • 2一、告警功能:支持以Topic粒度監控消息,存在失敗消息時主動推送告警郵件;
  • 2二、軌跡Log優化,新增、更新時記錄核心數據;消息日誌格式統一;
  • 2三、消息在線清理:在消息記錄界面,支持在線清理消息數據;
  • 2四、過時消息自動清理:消息中心新增參數 「xxl-mq.log.logretentiondays」設置消息過時天數,過時成功消息將會自動清理;
  • 2五、超時強化,除了客戶端支持超時控制外;服務端新增線程掃描,主動處理超時消息;消息超過 "生效時間 + 超時時間 + 1HOUT" 以後仍然未結束,將會主動標記爲失敗;
  • 2六、左側菜單規範:運行報表(業務線,主題數,消息記錄數;總消息成功率,日分佈柱狀圖,總分佈餅圖) + 消息主題 + 消息記錄 + 使用教程;
  • 2七、註冊中心遷移至DB,基於 "long polling" 實現註冊機器實時感知;註冊中心代碼及邏輯來源自「XXL-RPC原生輕量級註冊中心」;
  • 2八、輕量級改造,移除對ZK依賴,僅依賴DB便可完整集羣方式提供服務;缺點,非強一致性可能致使重複消費,開啓事務開關能夠避免該問題;
  • 2九、文檔示例完善,包括:併發消息、串行消息、廣播消息、延遲消息、失敗重試消息、超時控制消息等;
  • 30、文檔完善:消息模型說明,延時消息說明、事務消息說明、失敗重試、超時控制說明,
  • 3一、容器化:提供官方docker鏡像,並實時更新推送dockerhub,進一步實現產品開箱即用;

簡介

XXL-MQ是一款輕量級分佈式消息隊列,支持 "併發消息、串行消息、廣播消息、延遲消息、事務消息、失敗重試、超時控制" 等消息特性。現已開放源代碼,開箱即用。spring

輸入圖片說明

特性:

  • 一、簡單易用: 一行代碼便可發佈一條消息; 一行註解便可訂閱一個消息主題;
  • 二、輕量級: 部署簡單,不依賴第三方服務,一分鐘上手;
  • 三、消息中心HA:消息中心支持集羣部署,可大大提升系統可用性,以及消息吞吐能力;
  • 四、消費者HA:消費者支持集羣部署,保證消費者可用性;
  • 五、三種消息模式:docker

    • 並行消息:消息平均分配在該主題在線消費者,分片方式並行消費;適用於吞吐量較大的消息場景,如郵件發送、短信發送等業務邏輯
    • 串行消息:消息固定分配給該主題在線消費者中其中一個,FIFO方式串行消費;適用於嚴格限制併發的消息場景,如秒殺、搶單等排隊業務邏輯;
    • 廣播消息:消息將會廣播發送給該主題在線消費者分組,所有分組都會消費該消息,可是一個分組下只會消費一次;適用於廣播場景,如廣播更新緩存等
  • 六、延時消息: 支持設置消息的延遲生效時間, 到達設置的生效時間時該消息纔會被消費;適用於延時消費場景,如訂單超時取消等;
  • 七、事務性: 消費者開啓事務開關後,消息事務性保證只會成功執行一次;
  • 八、失敗重試: 支持設置消息的重試次數, 在消息執行失敗後將會按照設置的值進行消息重試執行,直至重試次數耗盡或者執行成功;
  • 九、超時控制: 支持自定義消息超時時間,消息消費超時將會主動中斷;
  • 十、吞吐量: 依賴於部署的消費中心集羣和DB性能;DB可藉助多表提高性能,不考慮DB的狀況下,吞吐量能夠無限橫向擴展;
  • 十一、消息可見: 系統中每一條消息可經過Web界面在線查看,甚至支持編輯消息內容和消息狀態;
  • 十二、消息可追蹤: 支持追蹤每一條消息的執行路徑, 便於排查業務問題;
  • 1三、容器化:提供官方docker鏡像,並實時更新推送dockerhub,進一步實現產品開箱即用;
  • 1四、消息失敗告警:支持以Topic粒度監控消息,存在失敗消息時主動推送告警郵件;默認提供郵件方式失敗告警,同時預留擴展接口,可方面的擴展短信、釘釘等告警方式;
  • 1五、容器化:提供官方docker鏡像,並實時更新推送dockerhub,進一步實現產品開箱即用;

文檔地址

技術交流

相關文章
相關標籤/搜索