消息隊列--ActiveMQ

一.消息隊列

1.概述

  • 消息隊列中間件是分布式系統(tǒng)中重要的組件寨躁,主要解決應(yīng)用耦合宪卿,異步消息,流量削鋒等問題烟瞧。
  • 實現(xiàn)高性能畴蒲,高可用悠鞍,可伸縮和最終一致性架構(gòu)。是大型分布式系統(tǒng)不可缺少的中間件模燥。
  • 目前在生產(chǎn)環(huán)境咖祭,使用較多的消息隊列有ActiveMQ,RabbitMQ蔫骂,ZeroMQ心肪,Kafka,MetaMQ纠吴,RocketMQ等硬鞍。

2.消息隊列應(yīng)用場景

(1)異步處理

場景說明:用戶注冊后,需要發(fā)注冊郵件和注冊短信戴已。傳統(tǒng)的做法如下兩種:
1)串行方式
將注冊信息寫入數(shù)據(jù)庫成功后固该,發(fā)送注冊郵件,再發(fā)送注冊短信糖儡。以上三個任務(wù)全部完成后伐坏,返回給客戶端。
簡圖:


串行方式

2)并行方式
將注冊信息寫入數(shù)據(jù)庫成功后握联,發(fā)送注冊郵件的同時桦沉,發(fā)送注冊短信。以上三個任務(wù)完成后金闽,返回給客戶端纯露。與串行的差別是,并行的方式可以提高處理的時間代芜。
原理圖:

并行方式

3)引入消息隊列埠褪,將不是必須的業(yè)務(wù)邏輯,異步處理。
改造后的架構(gòu)如下:

引入消息隊列

二.ActiveMQ

1.JMS簡介

(1)JMS即Java消息服務(wù)钞速,是JavaEE的13規(guī)范之一贷掖,是一套面向消息中間件(MOM)的應(yīng)用程序接口。用在兩個程序之間渴语,或分布式系統(tǒng)中發(fā)送消息苹威,進行異步通信。
(2)JMS使我們能夠通過消息收發(fā)服務(wù)(也可以稱為驾凶,消息中介程序或路由器)從一個JMS客戶機向另一個JMS客戶機發(fā)送消息牙甫。消息是JMS中的一種類型對象,由兩部分組成:報頭和消息主體狭郑。報頭由路由信息以及有關(guān)該消息的元數(shù)據(jù)組成腹暖。消息主體則攜帶著應(yīng)用程序的數(shù)據(jù)或有效負載汇在。根據(jù)有效負載的類型來劃分翰萨,消息可分為多種,它們分別攜帶:簡單文本消息糕殉、可序列化的對象亩鬼、屬性集合、字節(jié)流阿蝶、原始值流雳锋、無有效負載消息。

2.ActiveMQ簡介

ActiveMQ出身名門羡洁,是Apache門下的最流行的玷过,能力強勁的開源消息總線。
完全支持JMS1.1和J2EE1.4規(guī)范的JMS Provide實現(xiàn)筑煮。它從設(shè)計上保證了高性能的集群辛蚊,當然實現(xiàn)了JMS的P2P與PubSub兩種開發(fā)模式。

3.P2P開發(fā)模式實戰(zhàn)

(1)并導(dǎo)入ActiveMQ的核心jar包
(2)創(chuàng)建消息生產(chǎn)者類:JMSProducer
用戶下單后真仲,訂單系統(tǒng)需要通知庫存系統(tǒng)袋马。傳統(tǒng)的做法是,訂單系統(tǒng)調(diào)用庫存系統(tǒng)的接口秸应。
(3)創(chuàng)建消息消費者類:JMSConsumer

4.PubSub開發(fā)模式實戰(zhàn)

P2P的模式相當于一個消息生產(chǎn)者一個消費者虑凛,PubSub中可以有一個消息發(fā)布者多個消息訂閱者,開發(fā)與P2P幾乎一樣软啼,只是將createQueue(創(chuàng)建消息隊列)改為了createTopic(創(chuàng)建主題)桑谍;生產(chǎn)消息改為了發(fā)布消息;接收消息改為了訂閱消息

5.總結(jié)

ActiveMQ是JMS規(guī)范的一個實現(xiàn)產(chǎn)品祸挪,主要用在兩個程序之間霉囚,或分布式系統(tǒng)中發(fā)送消息,進行異步通信∮蓿可以用它來解決高并發(fā)的問題榜跌,或者分布式事務(wù)的問題等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盅粪,一起剝皮案震驚了整個濱河市钓葫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌票顾,老刑警劉巖础浮,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奠骄,居然都是意外死亡豆同,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門含鳞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來影锈,“玉大人,你說我怎么就攤上這事蝉绷⊙纪ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵熔吗,是天一觀的道長辆床。 經(jīng)常有香客問我,道長桅狠,這世上最難降的妖魔是什么讼载? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮中跌,結(jié)果婚禮上咨堤,老公的妹妹穿的比我還像新娘。我一直安慰自己晒他,他們只是感情好吱型,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著陨仅,像睡著了一般津滞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灼伤,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天触徐,我揣著相機與錄音,去河邊找鬼狐赡。 笑死撞鹉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸟雏,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼享郊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了孝鹊?” 一聲冷哼從身側(cè)響起炊琉,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎又活,沒想到半個月后苔咪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡柳骄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年团赏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耐薯。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡舔清,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出可柿,到底是詐尸還是另有隱情鸠踪,我是刑警寧澤丙者,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布复斥,位于F島的核電站,受9級特大地震影響械媒,放射性物質(zhì)發(fā)生泄漏目锭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一纷捞、第九天 我趴在偏房一處隱蔽的房頂上張望痢虹。 院中可真熱鬧,春花似錦主儡、人聲如沸奖唯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丰捷。三九已至,卻和暖如春寂汇,著一層夾襖步出監(jiān)牢的瞬間病往,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工骄瓣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留停巷,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像畔勤,于是被迫代替她去往敵國和親蕾各。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345