RocketMQ生產者組topic和消費組的關係

2021-10-02 12:45:09 字數 1026 閱讀 5467

各個之間的關係其實很鬆散,並不是說不能操作

訂閱關係一致

多個 group id 訂閱了多個 topic,並且每個 group id 裡的多個消費者例項的訂閱關係保持了一致。

消費冪等

最終一致性保證資料一致性,如果不冪等,將導致資料錯亂

topic和tag的關係

topic可以是一級過濾關係 tag是二級過濾關係

使用:業務訊息往往推薦做topic 的 一級區分

tag往往用於過濾後續的訊息

例如: 飛躍交易訊息 和 飛躍物流訊息 topic

飛躍化妝品下單訊息 和 飛躍電器下單訊息 tag

集群消費和廣播消費

推薦集群消費

可以用集群消費模擬廣播消費,例如建立多個groupid模擬廣播消費

問題解釋:

訂閱關係不一致

同一消費組下不同消費者訂閱關係

導致訊息丟失

關鍵的**: consumergroupinfo.updatesubscription(final set sublist) 關鍵**: if (sub.gettopic().equals(oldtopic)) … it.remove(); updated = true; 這裡其實是做了乙個檢查,做這個檢查的預設前提是乙個consumergroup下面的訂閱訊息是一樣的,就是每個consumer註冊的subscription應該是一樣的,如果不一樣就把之前註冊的刪除

未做冪等或者沒做好

1.在tcc中,傳送一條訂單過期取消的訊息,由於未做冪等導致,導致復活該訂單失敗(其實本身不推薦這樣,推薦的操作是,使用者去查詢失效的訂單時,選擇再來一單即可,而不是復活訂單)

2.僅僅通過redis的分布式鎖來做冪等:原有業務是查詢快取,然後修改快取,再落庫

但是在查詢快取時由於快取失效,導致去資料庫查詢快取,結果超過了紅鎖的查詢時間(10分鐘),導致該訊息的冪等操作失效,由其他訊息修改了原有資料,導致錯亂

參考:

RocketMQ 生產者核心講解

producergroup 組名在乙個應用裡面是唯一的 createtopickey 實際生產中不會使此暴露,會再次封裝 defaulttopicqueuenums 預設為4 乙個topic下預設掛的是四個佇列 sendmsgtimeout 單位 ms 訊息傳送的超時時間 compressmsgbo...

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

多生產者 多做「生產者」,少做「消費者」

生產者 vs 消費者 哪個更好?消費者 定義非常廣泛,購買一件物品 進行一次消費的人都是消費者 更深一層的含義就是 消費 了你的金錢 時間 精力,比如刷抖音,花費了你的時間和精力,單方面地接受資訊 向內汲取 向外消耗時間或金錢,那你就是 消費者 生產者 生產 製造 創作了某個物品 作品,別人消費你的...