ActiveMQ學習總結------入門篇01


注:*這篇博文文章主要介紹ActiveMQ是什么原理性的內容和如何安裝和簡易操作


 

一、 ActiveMQ  簡介

1 ActiveMQ是什么呢?看起來好碉堡的東西哇!

ActiveMQ 是 Apache 出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個
完全支持 JMS1.1 和 J2EE 1.4 規范的 JMS Provider 實現,盡管 JMS 規范出台已經是很久
的事情了,但是 JMS 在當今的 J2EE 應用中間仍然扮演着特殊的地位。

2  什么是消息呢?

大家對消息的這個詞肯定不會陌生,那么在我們ActiveMQ里面指的是什么,我想你應該有必要了解下

“消息”是在兩台計算機間傳送的數據單位。消息可以非常簡單,例如只包含文本字符串;
也可以更復雜,可能包含嵌入對象。

3 什么是隊列?

我覺的下面的這張圖對大家而言,相比已經很清楚了(能學到MQ都很了不起啦!)

 

 

 

 

4 什么是 消息隊列?

簡單來說:

“消息隊列”是在消息的傳輸過程中保存消息的容器。  

舉個小例子:比如你在qq上根你朋友倆天,聊天肯定是雙方的,那么你發給你朋友的消息就是存儲在這個騰訊的服務器中(理解為消息隊列)的,當你朋友上線(登錄QQ)的時候,就從服務器中收到了這條消息

是不是看起來很高大上,起始很容易了解,哈哈

 

5 常用消費服務應用

5.1 ActiveMQ

ActiveMQ 是 Apache 出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完
全支持 JMS1.1 和 J2EE 1.4 規范的 JMS Provider 實現。(也是我們本次用的喔!)


5.2 RabbitMQ
RabbitMQ 是一個在 AMQP 基礎上完成的,可復用的企業消息系統。他遵循 Mozilla Public
License 開源協議。開發語言為 Erlang。


5.3 RocketMQ
由阿里巴巴定義開發的一套消息隊列應用服務。


 

二、消息服務的應用場景

  消息隊列的主要特點是異步處理,主要目的是減少請求響應時間和解耦。所以主要的使
用場景就是將比較耗時而且不需要即時(同步)返回結果的操作作為消息放入消息隊列。同
時由於使用了消息隊列,只要保證消息格式不變,消息的發送方和接收方並不需要彼此聯系,
也不需要受對方的影響,即解耦和。

 

 

 

 

5.1  異步處理

例如:用戶注冊

用戶注冊流程:
1)注冊處理以及寫數據庫
2)發送注冊成功的手機短信
3)發送注冊成功的郵件信息
如果用消息中間件:則可以創建兩個線程來做這些事情,直接發送消息給消息中間件,
然后讓郵件服務和短信服務自己去消息中間件里面去取消息,然后取到消息后再自己做對應
的業務操作。就是這么方便

 

5.2 應用的解耦

例如:訂單處理

 

生成訂單流程:
1)在購物車中點擊結算
2)完成支付
3)創建訂單
4)調用庫存系統
訂單完成后,訂單系統並不去直接調用庫存系統,而是發送消息到消息中間件,寫入一
個訂單信息。庫存系統自己去消息中間件上去獲取,然后做發貨處理,並更新庫存,這樣能
夠實現互聯網型應用追求的快這一個屬性。而庫存系統讀取訂單后庫存應用這個操作也是非
常快的,所以有消息中間件對解耦來說也是一個不錯的方向。

 

5.3  流量的消峰

例如:秒殺功能

 

秒殺流程:
1)用戶點擊秒殺
2)發送請求到秒殺應用
3)在請求秒殺應用之前將請求放入到消息隊列
4)秒殺應用從消息隊列中獲取請求並處理。
比如,系統舉行秒殺活動,熱門商品。流量蜂擁而至 100 件商品,10 萬人擠進來怎么
辦?10 萬秒殺的操作,放入消息隊列。秒殺應用處理消息隊列中的 10 萬個請求中的前 100
個,其他的打回,通知失敗。流量峰值控制在消息隊列處,秒殺應用不會瞬間被懟死


 

三、 JMS

1 什么是 JMS

JMS(Java Messaging Service)是 Java 平台上有關面向消息中間件的技術規范,它便於
消息系統中的 Java 應用程序進行消息交換,並且通過提供標准的產生、發送、接收消息的接
口,簡化企業應用的開發,也就是Java幫我們定義的一套規范

 

2 JMS模型

2.1  點對點模型(Point To Point)

生產者發送一條消息到 queue,只有一個消費者能收到。

例如:你給你的好友發送一條消息,那么只有他能知道你發了啥

 

 

 

2.2  發布訂閱模型(Publish/Subscribe)

發布者發送到 topic 的消息,只有訂閱了 topic 的訂閱者才會收到消息。

例如:你在教室里面大喊“我不要當碼農!”,那么在教室的所有人都會聽見。  

 

 

*學到后面的時候,你將知道,我為什么舉得這兩個例子命名可以都在一個條件下成立,為什么還換到了另一個不着邊際的立場點上。


四、 ActiveMQ  安裝

准備環境:Linux

 

1 下載資源

 ActiveMQ 官網: http://activemq.apache.org

版本說明
ActiveMQ5.10.x 以上版本必須使用 JDK1.8 才能正常使用。
ActiveMQ5.9.x 及以下版本使用 JDK1.7 即可正常使用。

根據自己的JDK版本酌情而定,初學者不必太糾結版本問題,我這里采用的是ActiveMQ5.9.0版本

 

2 上傳至 Linux 服務器


3 解壓安裝文件

tar -zxf apache-activemq-5.9.0-bin.tar.gz

  


4 檢查權限(大部分都沒事的,可以略過)

ls -al apache-activemq-5.9.0/bin
如果權限不足,則無法執行,需要修改文件權限:
chmod 755 activemq

  


5 復制應用至本地目錄

cp -r apache-activemq-5.9.0 /usr/local/activemq


6 啟動 ActiveMQ

/usr/local/activemq/bin/activemq start


7 測試 ActiveMQ

檢查進程
ps aux | grep activemq
見到下述內容即代表啟動成功

 

 

 

 

7.2 管理界面

使用瀏覽器訪問 ActiveMQ 管理應用, 地址如下:
http://ip:8161/admin/
用戶名: admin
密碼: admin
ActiveMQ 使用的是 jetty 提供 HTTP 服務.啟動稍慢,建議短暫等待再訪問測試.
見到如下界面代表服務啟動成功

 

 

 

 

7.3 修改訪問端口(如果你想的話)

修改 ActiveMQ 配置文件: /usr/local/activemq/conf/jetty.xml   

 

 

 

配置文件修改完畢,保存並重新啟動 ActiveMQ 服務

 

7.4 修改用戶名和密碼

修改 conf/users.properties 配置文件.內容為: 用戶名=密碼
保存並重啟 ActiveMQ 服務即可

 

8 重啟 ActiveMQ

/usr/local/activemq/bin/activemq restart

9 關閉 ActiveMQ

/usr/local/activemq/bin/activemq stop

  

10  配置文件 activemq.xm

自行在vim里面輸入ese /61616搜索下位置哈(虛擬機壞了,按時不做截圖了)

配置文件中,配置的是 ActiveMQ 的核心配置信息. 是提供服務時使用的配置. 可以修改
啟動的訪問端口. 即 java 編程中訪問 ActiveMQ 的訪問端口.
默認端口為 61616.
使用協議是: tcp 協議.
修改端口后, 保存並重啟 ActiveMQ 服務即可.


11 ActiveMQ 

從它的目錄來說,還是很簡單的:
* bin 存放的是腳本文件
* conf 存放的是基本配置文件
* data 存放的是日志文件
* docs 存放的是說明文檔
* examples 存放的是簡單的實例
* lib 存放的是 activemq 所需 jar 包
* webapps 用於存放項目的目錄

 

 


 

 

ps:

*如果你感到枯燥的話,那就過會再來看看吧,原理性的東西,嗯,蠻重要的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM