准備:
環境:win7,Eclipse,jdk1.8
ActiveMQ版本:ActiveMQ 5.9.0 Release下載地址:http://activemq.apache.org/download-archives.html
開始:
1.下載完后進行解壓,解壓完找到其中的activemq-all-5.9.0.jar包.
2.Eclipse創建一個java項目,導入上面這個jar包
3.創建生產者和消費者類

生產者
package com.sinosoft.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSProducer {
//默認連接用戶名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
//默認連接密碼
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
//默認連接地址
private static final String BROKERURL = ActiveMQConnection.DEFAULT_BROKER_URL;
//發送的消息數量
private static final int SENDNUM = 10;
public static void main(String[] args) {
//連接工廠
ConnectionFactory connectionFactory;
//連接
Connection connection = null;
//會話,接收或者發送消息的線程
Session session;
//消息的目的地
Destination destination;
//消息生產者
MessageProducer messageProducer;
//實例化連接工廠
connectionFactory = new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKERURL);
try {
//通過連接工廠獲取連接
connection = connectionFactory.createConnection();
//啟動連接
connection.start();
//創建session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//創建一個名稱為Hello World!的消息隊列
destination = session.createQueue("Hello World");
//創建消息生產者
messageProducer = session.createProducer(destination);
//發送消息
sendMessage(session,messageProducer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally{
if(connection != null){
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
/**
* 發送消息
* @param session
* @param messageProducer 消息生產者
* @throws Exception
*/
public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
for (int i = 0; i < JMSProducer.SENDNUM; i++) {
//創建一條文本消息
TextMessage message = session.createTextMessage("activemq 發送消息:" + i);
System.err.println("發送消息:activemq 發送消息:" + i);
//通過消息生產者發出消息
messageProducer.send(message);
}
}
}
消費者
package com.sinosoft.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSConsumer {
//默認連接用戶名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
//默認連接密碼
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
//默認連接地址
private static final String BROKERURL = ActiveMQConnection.DEFAULT_BROKER_URL;
public static void main(String[] args) {
//連接工廠
ConnectionFactory connectionFactory;
//連接
Connection connection = null;
//會話,接收或者發送消息的線程
Session session;
//消息目的地
Destination destination;
//消息的消費者
MessageConsumer messageConsumer;
//實例化連接工廠
connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKERURL);
try {
//通過工廠獲取連接
connection = connectionFactory.createConnection();
//啟動連接
connection.start();
//創建會話
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//創建一個連接Hello World!的消息隊列
destination = session.createQueue("Hello World");
//創建消息的消費者
messageConsumer = session.createConsumer(destination);
while(true){
TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
if (textMessage != null) {
System.err.println("收到的消息:" + textMessage.getText());
} else {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
從解壓的壓縮包找到bin目錄下的activemq.bat並運行它

結果應該如下:

然后進入紅線標出來的地址,出現下面頁面表示已經啟動了ActiveMQ的服務

剛才運行activemq.bat成功后,默認也運行了activemq-admin.bat,所以進入地址http://localhost:8161/admin/
這時需要輸入用戶名和密碼,都是admin,成功后會進入到以下頁面

運行生產者類
控制台如下:

頁面上選擇queues,發現

再運行消費者類后
控制台

再看刷新Queues頁面,發現

就算是點對點的消息隊列發送和接收成功了.
如果將消費者類這里改為true

那么最終運行完的結果就是

總結,消息隊列,任重而道遠,需要慢慢探索,技術性東西都是,勤學一時,受用終身
