activemq 安裝與配置(Linux 環境)

activemq 安裝與配置(Linux 環境)
比較經典,轉載於其他博客
什麼是消息中間件(MQ)?
1.1 爲什麼會需要消息隊列(MQ)?

主要原因是由於在高併發環境下,由於來不及同步處理,請求往往會發生堵塞,比如說,大量的insert,update之類的請求同時到達MySQL,直接導致無數的行鎖表鎖,甚至最後請求會堆積過多,從而觸發too many connections錯誤。通過使用消息隊列,我們可以異步處理請求,從而緩解系統的壓力。

2.2 什麼是消息中間件

消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通信來進行分佈式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分佈式環境下擴展進程間的通信。對於消息中間件,常見的角色大致也就有Producer(生產者)、Consumer(消費者)
  常見的消息中間件產品:
  (1)ActiveMQ
  ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現。我們在本次課程中介紹 ActiveMQ的使用。
  (2)RabbitMQ
  AMQP協議的領導實現,支持多種場景。淘寶的MySQL集羣內部有使用它進行通訊,OpenStack開源雲平臺的通信組件,最先在金融行業得到運用。
  (3)ZeroMQ
  史上最快的消息隊列系統
  (4)Kafka
  Apache下的一個子項目 。特點:高吞吐,在一臺普通的服務器上既可以達到10W/s的吞吐速率;完全的分佈式系統。適合處理海量數據。

ActiveMQ
ActiveMQ是Apache的一個開源項目,它是一個能力強勁的開源消息總線,也是一箇中間件產品。它是JMS的一個實現。

首先了解一下JMS
JMS(Java Messaging Service)是Java平臺上有關面向消息中間件的技術規範,它便於消息系統中的Java應用程序進行消息交換,並且通過提供標準的產生、發送、接收消息的接口簡化企業應用的開發。

JMS是Java Message Service的簡稱,用來發送異步消息,在不同系統和不同的模塊之間我們可以利用它實現集成。
JMS有兩個好處:第一個就是讓模塊之間或者系統之間的耦合度降低,第二個是異步通信。

JMS本身只定義了一系列的接口規範,是一種與廠商無關的 API,用來訪問消息收發系統。它類似於 JDBC(java Database Connectivity):這裏,JDBC 是可以用來訪問許多不同關係數據庫的 API,而 JMS 則提供同樣與廠商無關的訪問方法,以訪問消息收發服務。許多廠商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,這只是幾個例子。 JMS 使您能夠通過消息收發服務(有時稱爲消息中介程序或路由器)從一個 JMS 客戶機向另一個 JML 客戶機發送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。消息主體則攜帶着應用程序的數據或有效負載。
JMS 定義了五種不同的消息正文格式,以及調用的消息類型,允許你發送並接收以一些不同形式的數據,提供現有消息格式的一些級別的兼容性。

· TextMessage–一個字符串對象
· MapMessage–一套名稱-值對
· ObjectMessage–一個序列化的 Java 對象
· BytesMessage–一個字節的數據流
· StreamMessage – Java 原始值的數據流

JMS的消息機制有2種模型,

一種是Point to Point,表現爲隊列的形式。發送的消息,只能被一個接收者取走;

另一種是Topic,可以被多個訂閱者訂閱,類似於羣發。

在JMS中有這樣幾個重要的核心接口和類:
複製代碼
ConnectionFactory:用於jms client獲取與jms provider的連接。不同的jms產品,對這個接口有不同的實現,比如說ActiveMQ,這個接口的實現類是ActiveMQConnectionFactory
Connection:是由ConnectionFactory產生的,表示jms client與jms provider的連接
Session:是由Connection產生的,表示一個會話。Session是關鍵組件,Message、Producer/Consumer、Destination都是在Session上創建的
Message:這個組件很好理解,就是傳輸的消息,裏面包括head、properties、body,其中head是必選的
Destination:是消息源,對發送者來說,就是消息發到哪裏;對接收者來說,就是從哪裏取消息。Destination有2個子接口,Queue和Topic,分別對應上面提到的2種模型
MessageProducer:是消息發送者
MessageConsumer:是消息接收者,和Message Producer是相反的一種組件
複製代碼

JMS有所瞭解之後,我們來看ActiveMQ
ActiveMQ特性
遵循JMS規範:ActiveMQ的各種特性是JMS1.1規範的實現。它們包括同步和異步消息傳遞,一次和只有一次的消息傳遞,對於預訂者的持久消息等等。依附於JMS規範意味着,不論JMS消息提供者是誰,同樣的基本特性都是有效的。
連接:ActiveMQ提供各種連接選擇,包括HTTP,HTTPS,IP多點傳送,SSL,STOMP,TCP,UDP,XMPP等。大量的連接協議支持使之具有更好的靈活性。
支持多種語言客戶端:ActiveMQ對多種語言提供客戶端API,除了Java之外還有C/C++、.NET、Perl、PHP、Ruby、Python等。這使得ActiveMQ能用在Java之外的其它語言中。很多其它語言都可以通過ActiveMQ提供的客戶端API使用ActiveMQ的全部特性。當然,ActiveMQ代理器(broker)仍然是運行在java虛擬機上,但是客戶端能夠使用其它的被支持的語言。
可插拔的持久性和安全:ActiveMQ提供多種持久性方案可供選擇,也可以完全按自己需求定製驗證和授權。例如,ActiveMQ通過KahaDB提供自己的超快速消息持久方案(ultra-fast message persistence),但也支持標準的JDBC方案。ActiveMQ可以通過配置文件提供簡單的驗證和授權,也提供標準的JAAS登陸模塊。
簡單的管理:ActiveMQ是爲開發者設計的。它並不需要專門的管理工具,因爲它提供各種易用且強大的管理特性。有很多方法去監控ActiveMQ的各個方面,可以通過JMX使用JConsole或ActiveMQ web console;可以運行ActiveMQ消息報告;可以用命令行腳本;可以通過日誌。
支持集羣:爲了利於擴展,多個ActiveMQ broker能夠聯合工作。這個方式就是network of brokers並且能支持多種拓撲結構。
ActiveMQ的安裝
將AMQ的tar包上傳至指定文件夾(如:/home/cspgs)
進入部署目錄,解壓文件(我這裏的部署路徑是/home/cspgs)
命令:tar -zxvf apache-activemq-5.12.1-bin.tar.gz
並將解壓後的目錄名改爲activemq

命令:mv apache-activemq-5.12.1 activemq
爲了能夠使用JMX監控遠程的ActiveMQ,我們需要對ActiveMQ進行配置,以使JMX能夠正確連接到遠程的ActiveMQ監控服務。
進入activemq目錄,修改conf目錄下的activemq.xml文件,修改2個地方
命令:vi conf/activemq.xml

(1)修改broker屬性中的字段,添加 useJmx= “true”

修改後:

(2)在文件中將managementContext的內容修改爲下面的內容

默認:

查看端口是否被佔用
Activemq有這幾個端口,分別是:

conf目錄的activemq.xml的5個端口

以及conf目錄下jetty.xml的1個端口

查看端口是否被佔用命令,xxx爲端口:

netstat -apn | grep xxx
端口未被佔用如下:

端口被佔用如下:

LISTEN那一行,表示被佔用。

LISTENING並不表示端口被佔用,不要和LISTEN混淆哦,查看具體端口時候,必須要看到tcp,端口號,LISTEN那一行,才表示端口被佔用了

進入ActiveMQ啓動目錄下
命令:cd bin/linux-x86-64

啓動ActiveMQ,並查看進程,amq啓動後會有2個進程
命令:./activemq start
查看進程:ps -ef | grep activemq

檢驗ActiveMQ是否啓動成功
在瀏覽器輸入url地址:http://ip:8161/admin

比如:我的地址是:http://192.168.80.72:8161/admin

有的訪問需要用戶和密碼:admin/admin

出現這個頁面表示已經啓動成功。

如果activemq沒有啓動成功,查看日誌文件,分析原因具體解決,日誌文件位於logs目錄下的activemq.log文件
IPv6配置更改不需要更改任何配置信息。

IPv6應用連接

程序連接地址需要修改爲IPv6地址

flow.queue.url=tcp://[fd15:4ba5:5a2b:1008:20c:29ff:fe45:98c7]:61616

驗證IPv6過程

用IPv6地址訪問ActiveMQ,訪問成功。

瀏覽器訪問地址:http://[fd15:4ba5:5a2b:1008:20c:29ff:fe45:98c7]:8161/admin

轉載於https://www.cnblogs.com/xiaotang5051729/p/10371272.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章