消息隊列的作用
1.消峰:當業務處在高峰期時,將數據先暫存,利用這個緩沖機制,再慢慢處理。
2.解耦:低耦合的業務可以延后處理。解耦帶來的好處就是:提高系統的可用性
3.消息分發:發送消息給多個接收端接收。
基本概念
主要由三塊組成:生產者(發送消息)
消費者(接收處理消息)
broker(存儲消息)
特性
發布與訂閱:
發布:某個生產者向某個topic 發送消息,
訂閱:某個消費者訂閱某個topic帶有某些tag的信息。從而消費生產者生產的信息。
消息順序:
某些情況下需要保證消息的消費順序,例如 創建訂單,付款,配送。消費要按照這種順序才是合理。但是多個訂單又能同時消費。
順序消息分為全局順序和分區順序。
全局順序:對於指定的一個 Topic,所有消息按照嚴格的先入先出(FIFO)的順序進行發布和消費。 適用場景:性能要求不高,所有的消息嚴格按照 FIFO 原則進行消息發布和消費的場景
分區順序:對於指定的一個 Topic,所有消息根據 sharding key 進行區塊分區。 同一個分區內的消息按照嚴格的 FIFO 順序進行發布和消費。 Sharding key 是順序消息中用來區分不同分區的關鍵字段,和普通消息的 Key 是完全不同的概念。 適用場景:性能要求高,以 sharding key 作為分區字段,在同一個區塊中嚴格的按照 FIFO 原則進行消息發布和消費的場景。
