RocketMQ踩坑:Tag與SQL沖突問(wèn)題

需求:
根據(jù)數(shù)據(jù)的特征發(fā)送同步至不同的consumer端蚕苇,比如說(shuō)某個(gè)message特征數(shù) 10,
有可能有的consumer消費(fèi)是消費(fèi)1-20凿叠,有的consumer消費(fèi)的數(shù)據(jù)特征為3-13這種不相同不固定的消費(fèi)范圍
這種需求我一下就感覺(jué)RocketMQ的SQL剛好合適涩笤,并且根據(jù)這種需求,當(dāng)然是使用廣播模式盒件,
然后我就看到有的文檔上寫著蹬碧,廣播模式的consumerGroup相當(dāng)于無(wú)效的,因?yàn)槭墙o所有consumer發(fā)送message
這時(shí)炒刁,我的想法是在同一個(gè)group中有著各自不相同的sql條件恩沽,每個(gè)consumer根據(jù)自己的限制條件進(jìn)行限制消費(fèi)。

關(guān)于pull還是push?

  • push支持SQL限制tag切心,pull不能使用SQL92(官方文檔這么寫的)飒筑;
  • 如果不需要這個(gè)SQL過(guò)濾,我們就可以使用pull

于是绽昏,我就有了以下的想法:(producer 生成10條測(cè)試數(shù)據(jù),coal值從0-9)

//第一種consumer
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumerGroup1");
consumer.setNamesrvAddr("localhost:9876");
consumer.setInstanceName("consumer 1");
consumer.setMessageModel(MessageModel.BROADCASTING);
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
consumer.subscribe("TopicTest", MessageSelector.bySql("coal < 3"));
consumer.registerMessageListener(MessageListener.getInstance()); // 簡(jiǎn)單自定義打印
consumer.start();
//第二種consumer
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumerGroup1");
consumer.setNamesrvAddr("localhost:9876");
consumer.setInstanceName("consumer 2");
consumer.setMessageModel(MessageModel.BROADCASTING);
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
consumer.subscribe("TopicTest", MessageSelector.bySql("coal >=2 and coal <= 7"));
consumer.registerMessageListener(MessageListener.getInstance()); // 簡(jiǎn)單自定義打印
consumer.start();

然后我就發(fā)現(xiàn):consumer并沒(méi)有按照我理想中的情況各自消費(fèi)
經(jīng)過(guò)多次測(cè)試俏脊,得到結(jié)論:
** 一個(gè)consumerGroup只能指定一種過(guò)濾條件(不管是Tag還是SQL全谤,都一樣)**

后生效的consumer的過(guò)濾條件會(huì)覆蓋之前congsumer的過(guò)濾條件

然后多次各種情況下測(cè)試,發(fā)現(xiàn)tag的“*”不太一樣爷贫。
tag的“*”不會(huì)覆蓋同組其他的tag认然,除了“*”其他tag都會(huì)在consumerGroup中覆蓋生效

我是這么理解:
同一個(gè)consumerGroup組补憾,
tag的“*”其實(shí)就是相當(dāng)于沒(méi)有tag.

詳細(xì)測(cè)試情況如下概述:
producer生產(chǎn)10條數(shù)據(jù),tag為0-9

第一個(gè)生效的consumer1的tag是“*”
第二個(gè)生效的consumer2的tag是“1”
則consumer1和consumer2都只會(huì)消費(fèi)tag為“1”的message

反過(guò)來(lái)卷员,第一個(gè)生效的consumer1的tag是“1”盈匾,第二個(gè)生效的consumer2的tag是“*”
則consumer1消費(fèi)tag為“1”的message,consumer2消費(fèi)所有的10條message

隨后我就想到了一種騷操作:

既然consumer的過(guò)濾條件會(huì)沖突毕骡,那么tag和sql之間會(huì)沖突嗎削饵?
代碼:

//第一種consumer
...
consumer.subscribe("TopicTest", MessageSelector.byTag("a"));
...
//第二種consumer
...
consumer.subscribe("TopicTest", MessageSelector.bySql("coal >=2 and coal <= 7"));
...

結(jié)論:

麻蛋,果然會(huì)沖突未巫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窿撬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叙凡,更是在濱河造成了極大的恐慌劈伴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件握爷,死亡現(xiàn)場(chǎng)離奇詭異跛璧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)新啼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門赡模,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人师抄,你說(shuō)我怎么就攤上這事漓柑。” “怎么了叨吮?”我有些...
    開(kāi)封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵辆布,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我茶鉴,道長(zhǎng)锋玲,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任涵叮,我火速辦了婚禮惭蹂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘割粮。我一直安慰自己盾碗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布舀瓢。 她就那樣靜靜地躺著廷雅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上航缀,一...
    開(kāi)封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天商架,我揣著相機(jī)與錄音,去河邊找鬼芥玉。 笑死蛇摸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的灿巧。 我是一名探鬼主播赶袄,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼砸烦!你這毒婦竟也來(lái)了弃鸦?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤幢痘,失蹤者是張志新(化名)和其女友劉穎唬格,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體颜说,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡购岗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了门粪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喊积。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖玄妈,靈堂內(nèi)的尸體忽然破棺而出乾吻,到底是詐尸還是另有隱情,我是刑警寧澤拟蜻,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布绎签,位于F島的核電站,受9級(jí)特大地震影響酝锅,放射性物質(zhì)發(fā)生泄漏诡必。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一搔扁、第九天 我趴在偏房一處隱蔽的房頂上張望爸舒。 院中可真熱鬧,春花似錦稿蹲、人聲如沸扭勉。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剖效。三九已至嫉入,卻和暖如春焰盗,著一層夾襖步出監(jiān)牢的瞬間璧尸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工熬拒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爷光,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓澎粟,卻偏偏與公主長(zhǎng)得像蛀序,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子活烙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 背景介紹 Kafka簡(jiǎn)介 Kafka是一種分布式的徐裸,基于發(fā)布/訂閱的消息系統(tǒng)。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O...
    高廣超閱讀 12,831評(píng)論 8 167
  • Kafka系列一- Kafka背景及架構(gòu)介紹 Kafka簡(jiǎn)介 Kafka是一種分布式的啸盏,基于發(fā)布/訂閱的消息系統(tǒng)重贺。...
    raincoffee閱讀 2,202評(píng)論 0 22
  • 目標(biāo) 高吞吐量來(lái)支持高容量的事件流處理 支持從離線系統(tǒng)加載數(shù)據(jù) 低延遲的消息系統(tǒng) 持久化 依賴文件系統(tǒng),持久化到本...
    jiangmo閱讀 1,280評(píng)論 0 4
  • RocketMQ 本文內(nèi)容:描述RocketMQ的概念與術(shù)語(yǔ)回懦,最下方解釋各種MQ之間的區(qū)別與選型 RcoketMQ...
    嚴(yán)重思想跑偏患者閱讀 3,612評(píng)論 0 1
  • 4. 設(shè)計(jì)思想 4.1 動(dòng)機(jī) 我們?cè)O(shè)計(jì)的 Kafka 能夠作為一個(gè)統(tǒng)一的平臺(tái)來(lái)處理大公司可能擁有的所有實(shí)時(shí)數(shù)據(jù)饋送...
    瘋狂的橙閱讀 1,077評(píng)論 1 4