步驟:
1 :下載ActiveMQ
官網:http://activemq.apache.org/
2 :解壓AcitveMQ,
根據自己的操作系統選擇運行win64或者win32下的activemq.bat,雙擊運行。注意:千萬不能選擇bin目錄下的activemq.bat,這樣會閃退。
我的解壓目錄為:

3:創建Java項目:
引入jar包。注意:不能少了hawtbuf-1.11.jar這個包,這個包是不能缺少的。
目錄結構如圖:

4:登錄本地的MQ服務:
登錄地址:http://localhost:8161/
初始賬號以及密碼:admin,admin
截圖如下:

登錄后的界面如下:


5:代碼實現:
Sender.java:
1 package com.lm.activemq; 2 3 import javax.jms.Connection; 4 import javax.jms.ConnectionFactory; 5 import javax.jms.DeliveryMode; 6 import javax.jms.Destination; 7 import javax.jms.MessageProducer; 8 import javax.jms.Session; 9 import javax.jms.TextMessage; 10 import org.apache.activemq.ActiveMQConnection; 11 import org.apache.activemq.ActiveMQConnectionFactory; 12 /** 13 * 14 * @author Wei 15 * @time 2016年12月28日 下午8:37:38 16 * 參考:http://heisetoufa.iteye.com/blog/1908335 17 */ 18 public class Sender { 19 private static final int SEND_NUMBER = 5; 20 21 public static void main(String[] args) { 22 // ConnectionFactory :連接工廠,JMS 用它創建連接 23 ConnectionFactory connectionFactory; // Connection :JMS 客戶端到JMS 24 // Provider 的連接 25 Connection connection = null; // Session: 一個發送或接收消息的線程 26 Session session; // Destination :消息的目的地;消息發送給誰. 27 Destination destination; // MessageProducer:消息發送者 28 MessageProducer producer; // TextMessage message; 29 // 構造ConnectionFactory實例對象,此處采用ActiveMq的實現jar 30 /*connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, 31 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616");*/ 32 connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, 33 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); 34 //打印出用戶和密碼 35 System.out.println("ActiveMQConnection.DEFAULT_USER:" + ActiveMQConnection.DEFAULT_USER 36 + ",ActiveMQConnection.DEFAULT_PASSWORD:" + ActiveMQConnection.DEFAULT_PASSWORD); 37 try { // 構造從工廠得到連接對象 38 connection = connectionFactory.createConnection(); 39 // 啟動 40 connection.start(); 41 // 獲取操作連接 42 session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 43 // 獲取session注意參數值xingbo.xu-queue是一個服務器的queue,須在在ActiveMq的console配置 44 destination = session.createQueue("foo.bar"); 45 // 得到消息生成者【發送者】 46 producer = session.createProducer(destination); 47 // 設置不持久化,此處學習,實際根據項目決定 48 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 49 // 構造消息,此處寫死,項目就是參數,或者方法獲取 50 sendMessage(session, producer); 51 session.commit(); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 } finally { 55 try { 56 if (null != connection) 57 connection.close(); 58 } catch (Throwable ignore) { 59 } 60 } 61 } 62 63 public static void sendMessage(Session session, MessageProducer producer) throws Exception { 64 for (int i = 1; i <= SEND_NUMBER; i++) { 65 TextMessage message = session.createTextMessage("ActiveMq 發送的消息" + i); 66 // 發送消息到目的地方 67 68 System.out.println("發送消息:" + "ActiveMq 發送的消息" + i); 69 producer.send(message); 70 } 71 } 72 }
Receiver.java:
1 package com.lm.activemq; 2 3 4 import javax.jms.Connection; 5 import javax.jms.ConnectionFactory; 6 import javax.jms.Destination; 7 import javax.jms.MessageConsumer; 8 import javax.jms.Session; 9 import javax.jms.TextMessage; 10 import org.apache.activemq.ActiveMQConnection; 11 import org.apache.activemq.ActiveMQConnectionFactory; 12 /** 13 * 14 * @author Wei 15 * @time 2016年12月28日 下午8:37:51 16 * 參考:http://heisetoufa.iteye.com/blog/1908335 17 */ 18 public class Receiver { 19 public static void main(String[] args) { 20 int i = 0; 21 22 // ConnectionFactory :連接工廠,JMS 用它創建連接 23 ConnectionFactory connectionFactory; 24 // Connection :JMS 客戶端到JMS Provider 的連接 25 Connection connection = null; 26 // Session: 一個發送或接收消息的線程 27 Session session; 28 // Destination :消息的目的地;消息發送給誰. 29 Destination destination; 30 // 消費者,消息接收者 31 MessageConsumer consumer; 32 // connectionFactory = new ActiveMQConnectionFactory( 33 // ActiveMQConnection.DEFAULT_USER, 34 // ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616"); 35 connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, 36 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); 37 try { 38 // 構造從工廠得到連接對象 39 connection = connectionFactory.createConnection(); 40 // 啟動 41 connection.start(); 42 // 獲取操作連接 43 session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); 44 // 獲取session注意參數值 foo.bar 是一個服務器的queue,須在在ActiveMq的console配置 45 destination = session.createQueue("foo.bar"); 46 consumer = session.createConsumer(destination); 47 while (true) { 48 // 設置接收者接收消息的時間,為了便於測試,這里誰定為100s 49 TextMessage message = (TextMessage) consumer.receive(); 50 if (null != message) { 51 i++; 52 System.out.println("收到消息" + i +":"+ message.getText()); 53 } else { 54 break; 55 } 56 } 57 } catch (Exception e) { 58 e.printStackTrace(); 59 } finally { 60 try { 61 if (null != connection) 62 connection.close(); 63 } catch (Throwable ignore) { 64 } 65 } 66 } 67 }
使用 MQ編輯內容點擊send按鈕進行發送,
eclipse中Receiver的控制台的輸出為:
收到消息17:Enter some text here for the message body...
這里可以編輯發送的內容等。
當然了,也可用過Java代碼來進行消息隊列的發送。
源碼:鏈接:http://pan.baidu.com/s/1hsskzic 密碼:8bty
