RocketMQ 與 Spring Cloud Stream整合(五甜熔、廣播消息)

在上述的示例中,我們看到的都是使用集群消費突倍,也是最常用的消費模式腔稀。而在一些場景下,我們需要使用廣播消費羽历。

廣播消費模式下焊虏,相同 Consumer Group 的每個 Consumer 實例都接收全量的消息。

例如說秕磷,在應用中诵闭,緩存了數(shù)據(jù)字典等配置表在內存中,可以通過 RocketMQ 廣播消費澎嚣,實現(xiàn)每個應用節(jié)點都消費消息疏尿,刷新本地內存的緩存。

又例如說易桃,我們基于 WebSocket 實現(xiàn)了 IM 聊天褥琐,在我們給用戶主動發(fā)送消息時,因為我們不知道用戶連接的是哪個提供 WebSocket 的應用晤郑,所以可以通過 RocketMQ 廣播消費敌呈,每個應用判斷當前用戶是否是和自己提供的 WebSocket 服務連接,如果是造寝,則推送消息給用戶驱富。

下面,我們來搭建一個 Spring Cloud Stream 消費異常處理機制的示例匹舞。考慮方便线脚,我們直接復用[快速入門]文章的項目赐稽,使用 [sca-stream-rocketmq-producer]發(fā)送消息,從 [sca-stream-rocketmq-consumer]復制出 [sca-stream-rocketmq-consumer-broadcasting] 來演示廣播消費浑侥。

5.1 復制項目

使用 [sca-stream-rocketmq-producer]發(fā)送消息姊舵,從 [sca-stream-rocketmq-consumer]復制出 [sca-stream-rocketmq-consumer-broadcasting]。

5.2 配置文件

修改 [application.yml]配置文件寓落,只改了一個參數(shù)括丁,設置 broadcasting 配置項為 true,開啟廣播消費的模式伶选。完整配置如下:

spring:
  application:
    name: erbadagang-consumer-application
  cloud:
    # Spring Cloud Stream 配置項史飞,對應 BindingServiceProperties 類
    stream:
      # Binding 配置項尖昏,對應 BindingProperties Map
      bindings:
        erbadagang-input:
          destination: ERBADAGANG-TOPIC-01 # 目的地。這里使用 RocketMQ Topic
          content-type: application/json # 內容格式构资。這里使用 JSON
          group: erbadagang-consumer-group-ERBADAGANG-TOPIC-01 # 消費者分組,命名規(guī)則:組名+topic名

        trek-input:
          destination: TREK-TOPIC-01 # 目的地抽诉。這里使用 RocketMQ Topic
          content-type: application/json # 內容格式。這里使用 JSON
          group: trek-consumer-group-TREK-TOPIC-01 # 消費者分組,命名規(guī)則:組名+topic名
      # Spring Cloud Stream RocketMQ 配置項
      rocketmq:
        # RocketMQ Binder 配置項吐绵,對應 RocketMQBinderConfigurationProperties 類
        binder:
          name-server: 101.133.227.13:9876 # RocketMQ Namesrv 地址
        # RocketMQ 自定義 Binding 配置項迹淌,對應 RocketMQBindingProperties Map
        bindings:
          erbadagang-input:
            # RocketMQ Consumer 配置項,對應 RocketMQConsumerProperties 類
            consumer:
              enabled: true # 是否開啟消費己单,默認為 true
              broadcasting: true # 是否使用廣播消費唉窃,默認為 false(使用集群消費)

server:
  port: ${random.int[10000,19999]} # 隨機端口,方便啟動多個消費者

5.3 簡單測試

① 執(zhí)行 ConsumerApplication 兩次纹笼,啟動兩個消費者的實例纹份,從而實現(xiàn)在消費者分組 erbadagang-consumer-group-ERBADAGANG-TOPIC-01 下有兩個消費者實例。

② 執(zhí)行 ProducerApplication允乐,啟動生產者的實例矮嫉。

啟動1個producer,2個consumer

之后牍疏,請求 http://127.0.0.1:18080/demo01/send 接口三次蠢笋,發(fā)送三條消息。此時在 IDEA 控制臺看到消費者打印日志如下:

// ConsumerApplication 控制臺 01
2020-08-06 17:07:35.633  INFO 8444 --- [MessageThread_1] c.e.s.s.r.c.listener.Demo01Consumer      : [onMessage][線程編號:94 消息內容:Demo01Message{id=1167829440}]

// ConsumerApplication 控制臺 02
2020-08-06 17:07:35.633  INFO 15132 --- [MessageThread_1] c.e.s.s.r.c.listener.Demo01Consumer      : [onMessage][線程編號:93 消息內容:Demo01Message{id=1167829440}]

從日志可以看出鳞陨,每條消息僅被每個消費者消費了一次昨寞。

底線


本文源代碼使用 Apache License 2.0開源許可協(xié)議,這里是本文源碼Gitee地址厦滤,可通過命令git clone+地址下載代碼到本地援岩,也可直接點擊鏈接通過瀏覽器方式查看源代碼。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末掏导,一起剝皮案震驚了整個濱河市享怀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趟咆,老刑警劉巖添瓷,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異值纱,居然都是意外死亡鳞贷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門虐唠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搀愧,“玉大人,你說我怎么就攤上這事≡凵福” “怎么了搓幌?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長眷蚓。 經常有香客問我鼻种,道長,這世上最難降的妖魔是什么沙热? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任叉钥,我火速辦了婚禮,結果婚禮上篙贸,老公的妹妹穿的比我還像新娘投队。我一直安慰自己,他們只是感情好爵川,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扒披,像睡著了一般。 火紅的嫁衣襯著肌膚如雪圃泡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天颇蜡,我揣著相機與錄音价说,去河邊找鬼。 笑死风秤,一個胖子當著我的面吹牛缤弦,可吹牛的內容都是我干的碍沐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鞍匾!你這毒婦竟也來了橡淑?” 一聲冷哼從身側響起梁棠,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎男娄,沒想到半個月后崭捍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年宴猾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片油讯。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡由捎,死狀恐怖软驰,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站著淆,受9級特大地震影響,放射性物質發(fā)生泄漏永部。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一苔埋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荞膘,春花似錦、人聲如沸羽资。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弥激,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間微服,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工以蕴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辛孵,地道東北人丛肮。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓宝与,卻偏偏與公主長得像,于是被迫代替她去往敵國和親习劫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349