Java基礎知識:初識ActiveMQ消息中間件
在介紹ActiveMQ之前,先來復習一下J2EE中的JMS規范。
JMS是java Message Service的簡稱,用來發送異步消息,在不同系統和不同的模塊之間我們可以利用它實現集成。
JMS有兩個好處,第一個就是讓模塊之間或者系統之間的耦合度降低,第二個是異步通信。
JMS的消息機制有2種模型,一種是Point to Point,表現為隊列的形式。發送的消息,只能被一個接收者取走;另一種是Topic,可以被多個訂閱者訂閱,類似于群發。
在JMS中有這樣幾個重要的核心接口和類:
1. ConnectionFactory,用于jms client獲取與jms provider的連接。不同的jms產品,對這個接口有不同的實現,比如說ActiveMQ,這個接口的實現類是ActiveMQConnectionFactory
2. Connection,是由ConnectionFactory產生的,表示jms client與jms provider的連接
3. Session,是由Connection產生的,表示一個會話。Session是關鍵組件,Message、Producer/Consumer、Destination都是在Session上創建的
4. Message,這個組件很好理解,就是傳輸的消息,里面包括head、properties、body,其中head是必選的
5. Destination,是消息源,對發送者來說,就是消息發到哪里;對接收者來說,就是從哪里取消息。Destination有2個子接口,Queue和Topic,分別對應上面提到的2種模型
6. MessageProducer,是消息發送者,創建這個組件的代碼類似:
Java代碼 :
[java]
Destination dest =session.createQueue("dotaQueue");// 消息目的地
MessageProducer producer =session.createProducer(dest);// 消息發送者
可以注意到,這里需要把Destination作為參數,傳入createProducer()方法,這說明消息發送者是綁定到Destination上的,這個發送者發送的消息,會發送到這個綁定的Destination上
7. MessageConsumer,是消息接收者,和Message Producer是相反的一種組件
對JMD有所了解之后,我們來看ActiveMQ。
運行bin目錄下的activemq.bat啟動mq,mq會占用至少2個端口,默認的是61616和8161
61616是等待jms client的連接,8161是ActiveMQ自帶的一個web應用
localhost:8161/demo,可以看到各種官方提供的例子
localhost:8161/admin,是ActiveMQ的管理控制臺