RocketMQ 5 訂閱關係的一致性規範

2022-09-20 10:06:11 字數 2823 閱讀 6823

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

例如下消費關係, 不同的消費組,消費不同的佇列,相同的消費組訂閱相同的佇列,tag

錯誤示例:

乙個消費者組訂閱了多個topic,但是該消費者組裡的多個consumer例項的訂閱關係並沒有保持一致。

示例1: 訂閱了不同topic

該例中的錯誤在於,同乙個消費者組中的兩個consumer例項訂閱了不同的topic。

consumer例項1-1:(訂閱了topic為jodie_test_a,tag為所有的訊息)

properties properties = new properties();

properties.put(propertykeyconst.group_id, "gid_jodie_test_1");

consumer consumer = onsfactory.createconsumer(properties);

consumer.subscribe("jodie_test_a", "*", new messagelistener()

});

consumer例項1-2:(訂閱了topic為jodie_test_b,tag為所有的訊息)

properties properties = new properties();

properties.put(propertykeyconst.group_id, "gid_jodie_test_1");

consumer consumer = onsfactory.createconsumer(properties);

consumer.subscribe("jodie_test_b", "*", new messagelistener()

});

示例2: 訂閱了不同tag該例中的錯誤在於,同乙個消費者組中的兩個consumer訂閱了相同topic的不同tag。

consumer例項2-1:(訂閱了topic為jodie_test_a,tag為taga的訊息)

properties properties = new properties();

properties.put(propertykeyconst.group_id, "gid_jodie_test_2");

consumer consumer = onsfactory.createconsumer(properties);

consumer.subscribe("jodie_test_a", "taga", new messagelistener()

});

consumer例項2-2:(訂閱了topic為jodie_test_a,tag為所有的訊息)

properties properties = new properties();

properties.put(propertykeyconst.group_id, "gid_jodie_test_2");

consumer consumer = onsfactory.createconsumer(properties);

consumer.subscribe("jodie_test_a", "*", new messagelistener()

});

示例3: 訂閱了不同數量或者種類的topic該例中的錯誤在於,同乙個消費者組中的兩個consumer訂閱了不同數量的topic。

consumer例項3-1:(該consumer訂閱了兩個topic)

properties properties = new properties();

properties.put(propertykeyconst.group_id, "gid_jodie_test_3");

consumer consumer = onsfactory.createconsumer(properties);

consumer.subscribe("jodie_test_a", "taga", new messagelistener()

});consumer.subscribe("jodie_test_b", "tagb", new messagelistener()

});

consumer例項3-2:(該consumer訂閱了乙個topic,或者兩個和上面不同的topic都算)

properties properties = new properties();

properties.put(propertykeyconst.group_id, "gid_jodie_test_3");

consumer consumer = onsfactory.createconsumer(properties);

consumer.subscribe("jodie_test_a", "tagb", new messagelistener()

});

注意,上面的幾種錯誤示例,在執行時並不會報錯,並且在少量的訊息消費中,可能也看不出什麼問題,但是當消費量很大,broker集群比較複雜時,將有可能出現不可預料的問題, 同時官網也不建議我們這樣做.

一次Rocketmq的維修之路

始終不知道開發和運維的區別。現在我這全套環境都是自己搭建的 1 起因 專案本地啟動,本地和測試環境使用同樣的topic,又不想單獨建立topic,計畫更改mq的配置,可以自動建立topic和topic消費組 3 結論 要先啟動nameserver,再啟動broker。因為broker要向namese...

發布訂閱 跟 觀察者模式的關係和區別

什麼是發布訂閱?這裡實現乙個簡單的發布訂閱說明一下。myevent emit myevent.on myevent.on myevent.on myevent.emit 列印三個訂閱順序 發布訂閱原理比較簡單。每次訂閱就往陣列裡面新增乙個方法。當emit觸發是將整個陣列遍歷一遍讓方法逐個執行。什麼是...

mysql學習(5) 多表之間的關係

mysql相互關聯的表之間存在一對一,一對多 多對一 多對多的關係。1,一對一的關係 這種關係即多個表具有相同的主鍵,實際中用的並不多,因為完全可以將這種關係的合併為同一張表。2,一對多 多對一 的關係 其中表1的主鍵是表2的外來鍵 即表1的某欄位作為主鍵,表2的相同欄位字段繫結到表1的主鍵欄位上 ...