前言:
最近接觸到了消息隊列,學習了activeMQ,在這裏做一個簡單記錄,方便以後查詢。
一、什麼是ActiveMQ
1.1介紹
ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演着特殊的地位。
1.2特點
⒈ 多種語言和協議編寫客戶端。語言: Java,C,C++,C#,Ruby,Perl,Python,PHP。應用協議:OpenWire,Stomp REST,WS Notification,XMPP,AMQP
⒉ 完全支持JMS1.1和J2EE 1.4規範 (持久化,XA消息,事務)
⒊ 對Spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統裏面去,而且也支持Spring2.0的特性
⒋ 通過了常見J2EE服務器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上
⒌ 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
⒍ 支持通過JDBC和journal提供高速的消息持久化
⒎ 從設計上保證了高性能的集羣,客戶端-服務器,點對點
⒏ 支持Ajax
⒐ 支持與Axis的整合
⒑ 可以很容易得調用內嵌JMSprovider,進行測試
二、ActiveMQ的消息形式
ActiveMQ對於消息的傳遞有兩種類型:
1.一種是點對點的,即一個生產者和一個消費者一一對應;
2.另一種是發佈/訂閱模式,即一個生產者產生消息並進行發送後,可以由多個消費者進行接收。
JMS定義了五種不同的消息正文格式,以及調用的消息類型,允許你發送並接收以一些不同形式的數據,提供現有消息格式的一些級別的兼容性。五種形式如下:
· StreamMessage -- Java原始值的數據流
· MapMessage--一套名稱-值對
· TextMessage--一個字符串對象
· ObjectMessage--一個序列化的 Java對象
· BytesMessage--一個字節的數據流
三、ActiveMQ的應用場景
ActiveMQ作爲消息隊列的一種,它的應用場景實際上就是消息隊列的應用場景,這裏就說一下他的應用場景:
1. 異步處理:
拿一個用戶下訂單發貨舉例子,訂單發貨以後需要給用戶發送短信,在這期間需要修改數據庫還要發送短信,如果使用傳統的方式修改數據庫然後發短信,需要消耗修改數據庫的時間和發短信的時間,如果使用消息隊列,我們就只需要修改數據庫和寫入消息隊列,寫入消息隊列的時間基本可以忽略,這樣系統的響應時間會有所提升
2. 應用解耦:
比如:在電商分佈式系統中,有兩個系統:1.elasticsearch搜索系統2.商品系統,假如我們添加了一款商品,那麼需要在elasticsearch的索引庫中添加一個索引。傳統的方式是商品系統直接調用搜索系統的服務,假如搜索系統無法訪問,那麼就會導致添加商品失敗。如果使用消息隊列就會避免這種情況,而且還會降低耦合度
3. 流量削鋒:
比如:秒殺活動,一般會因爲流量過大,導致流量暴增,系統癱瘓。爲解決這個問題,一般需要在應用前端加入消息隊列。
四、ActiveMQ的安裝
4.1下載
1.下載地址:http://activemq.apache.org/download.html
4.2準備安裝環境
1、需要jdk
2、安裝Linux系統。生產環境都是Linux系統。(爲了方便我直接安裝到了windows中)
4.3安裝
ActiveMQ的安裝和tomcat的安裝很類似,直接解壓就可以使用
1.Windows系統安裝,
直接解壓儘可以使用,運行文件夾下的activemq.bat.bat即可
2.linux系統安裝
第一步:把ActiveMQ 的壓縮包上傳到Linux系統。
第二步:解壓縮。
第三步:啓動。
使用bin目錄下的activemq命令啓動:
[root@localhost bin]# ./activemq start
關閉:
[root@localhost bin]# ./activemq stop
查看狀態:
[root@localhost bin]# ./activemq status
linux安裝可能存在問題:
問題:
Linux安裝的activeMQ,如果訪問activeMQ時候,發現報錯405
解決:
修改hosts文件,配置機器名和127.0.0.1的映射關係。
1.在/etc/sysconfig/network文件中定義了機器名:
3.重新啓動Activemq的服務
4.4測試
Linux注意打開防火牆:8161
進入管理後臺:
用戶名:admin
密碼:admin