ActiveMQ概念

先看概念
activemq是JMS消息通信規(guī)范的一個實現∑ぃ總的來說,消息規(guī)范里面定義最常見的幾種消息通信模式主要有發(fā)布-訂閱卢鹦、點對點這兩種臀脏。另外,通過結合這些模式的具體應用冀自,我們在處理某些應用場景的時候也衍生出來了一種請求應答的模式揉稚。


JMS主要的幾個步驟如下:

  1. 獲得JMS connection factory. 通過我們提供特定環(huán)境的連接信息來構造factory。
  2. 利用factory構造JMS connection
  3. 啟動connection
  4. 通過connection創(chuàng)建JMS session.
  5. 指定JMS destination.
  6. 創(chuàng)建JMS producer或者創(chuàng)建JMS message并提供destination.
  7. 創(chuàng)建JMS consumer或注冊JMS message listener.
  8. 發(fā)送和接收JMS message.
  9. 關閉所有JMS資源熬粗,包括connection, session, producer, consumer等搀玖。

解釋上面

  • ConnectionFactory
    創(chuàng)建Connection對象的工廠,針對兩種不同的jms消息模型驻呐,分別有QueueConnectionFactory和TopicConnectionFactory兩種灌诅。可以通過JNDI來查找ConnectionFactory對象含末。

  • Destination
    Destination的意思是消息生產者的消息發(fā)送目標或者說消息消費者的消息來源猜拾。對于消息生產者來說,它的Destination是某個隊列(Queue)或某個主題(Topic);對于消息消費者來說佣盒,它的Destination也是某個隊列或主題(即消息來源)挎袜。所以,Destination實際上就是兩種類型的對象:Queue肥惭、Topic可以通過JNDI來查找Destination盯仪。

  • Connection
    Connection表示在客戶端和JMS系統(tǒng)之間建立的鏈接(對TCP/IP socket的包裝)。Connection可以產生一個或多個Session务豺。跟ConnectionFactory一樣磨总,Connection也有兩種類型:QueueConnection和TopicConnection。

  • Session
    Session是我們操作消息的接口笼沥◎窖啵可以通過session創(chuàng)建生產者、消費者奔浅、消息等馆纳。Session提供了事務的功能。當我們需要使用session發(fā)送/接收多個消息時汹桦,可以將這些發(fā)送/接收動作放到一個事務中鲁驶。同樣,也分QueueSession和TopicSession舞骆。

  • 消息生產者
    消息生產者由Session創(chuàng)建钥弯,并用于將消息發(fā)送到Destination径荔。同樣,消息生產者分兩種類型:QueueSender和TopicPublisher脆霎∽艽Γ可以調用消息生產者的方法(send或publish方法)發(fā)送消息。

  • 消息消費者
    消息消費者由Session創(chuàng)建睛蛛,用于接收被發(fā)送到Destination的消息鹦马。兩種類型:QueueReceiver和TopicSubscriber∫渖觯可分別通過session的createReceiver(Queue)或createSubscriber(Topic)來創(chuàng)建荸频。當然鞠鲜,也可以session的creatDurableSubscriber方法來創(chuàng)建持久化的訂閱者卢厂。

  • MessageListener
    消息監(jiān)聽器。如果注冊了消息監(jiān)聽器敷待,一旦消息到達场仲,將自動調用監(jiān)聽器的onMessage方法遇绞。EJB中的MDB(Message-Driven Bean)就是一種MessageListener。


兩種模式
1.發(fā)布訂閱模式
客戶端將消息發(fā)送到主題燎窘。多個發(fā)布者將消息發(fā)送到Topic,系統(tǒng)將這些消息傳遞給多個訂閱者。

  • 每個消息可以有多個消費者蹄咖。
  • 發(fā)布者和訂閱者之間有時間上的依賴性褐健。針對某個主題(Topic)的訂閱者,它必須創(chuàng)建一個訂閱者之后澜汤,才能消費發(fā)布者的消息蚜迅,而且為了消費消息,訂閱者必須保持運行的狀態(tài)俊抵。
  • 為了緩和這樣嚴格的時間相關性谁不,JMS允許訂閱者創(chuàng)建一個可持久化的訂閱。這樣徽诲,即使訂閱者沒有被激活(運行)刹帕,它也能接收到發(fā)布者的消息。

2.P2P模式
在p2p里一個queue只有一個發(fā)送者和一個接收者谎替。如果你希望發(fā)送的每個消息都應該被成功處理的話偷溺,那么你需要P2P模式。

  • 每個消息只有一個消費者(Consumer)(即一旦被消費钱贯,消息就不再在消息隊列中)挫掏。
  • 發(fā)送者和接收者之間在時間上沒有依賴性,也就是說當發(fā)送者發(fā)送了消息之后秩命,不管接收者有沒有正在運行尉共,它不會影響到消息被發(fā)送到隊列褒傅,當有新的接收者出現時,此消息被消費袄友。
  • 接收者在成功接收消息之后需向隊列應答成功殿托。

要點:
topic模式:每個消息可以有多個消費者。訂閱者必須在創(chuàng)建后杠河,并保持運行的狀態(tài)碌尔。才能消費發(fā)布者的消息。
queue模式:只有一個發(fā)送者和一個接收者券敌。發(fā)送者發(fā)送了消息之后唾戚,不管接收者有沒有正在運行,消息被發(fā)送到隊列待诅,當有新的接收者出現時叹坦,此消息被消費。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末卑雁,一起剝皮案震驚了整個濱河市募书,隨后出現的幾起案子,更是在濱河造成了極大的恐慌测蹲,老刑警劉巖莹捡,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異扣甲,居然都是意外死亡篮赢,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門琉挖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來启泣,“玉大人,你說我怎么就攤上這事示辈×让#” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵矾麻,是天一觀的道長纱耻。 經常有香客問我,道長射富,這世上最難降的妖魔是什么膝迎? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮胰耗,結果婚禮上限次,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好卖漫,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布费尽。 她就那樣靜靜地躺著,像睡著了一般羊始。 火紅的嫁衣襯著肌膚如雪旱幼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天突委,我揣著相機與錄音柏卤,去河邊找鬼。 笑死匀油,一個胖子當著我的面吹牛缘缚,可吹牛的內容都是我干的。 我是一名探鬼主播敌蚜,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桥滨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弛车?” 一聲冷哼從身側響起齐媒,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纷跛,沒想到半個月后喻括,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡贫奠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年双妨,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叮阅。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泣特,靈堂內的尸體忽然破棺而出浩姥,到底是詐尸還是另有隱情,我是刑警寧澤状您,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布勒叠,位于F島的核電站,受9級特大地震影響膏孟,放射性物質發(fā)生泄漏眯分。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一柒桑、第九天 我趴在偏房一處隱蔽的房頂上張望弊决。 院中可真熱鬧,春花似錦、人聲如沸飘诗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昆稿。三九已至纺座,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溉潭,已是汗流浹背净响。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喳瓣,地道東北人馋贤。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像夫椭,于是被迫代替她去往敵國和親掸掸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蹭秋,服務發(fā)現扰付,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • ActiveMQ 即時通訊服務 淺析http://www.cnblogs.com/hoojo/p/active_m...
    bboymonk閱讀 1,488評論 0 11
  • 1仁讨、前言 之前我們通過兩篇文章(架構設計:系統(tǒng)間通信(19)——MQ:消息協(xié)議(上)羽莺、架構設計:系統(tǒng)間通信(20)...
    境里婆娑閱讀 1,883評論 0 4
  • 什么是JMS Java消息服務(Java Message Service,簡稱JMS)是用于訪問企業(yè)消息系統(tǒng)的開發(fā)...
    zach_undefined閱讀 3,701評論 0 1
  • 一洞豁、 消息隊列概述 消息隊列中間件是分布式系統(tǒng)中重要的組件盐固,主要解決應用耦合、異步消息丈挟、流量削鋒等問題刁卜。實現高性能...
    步積閱讀 56,935評論 10 138