一、環境准備
1,官網http://activemq.apache.org/下載最新版本的ActiveMQ,並解壓
2,打開對應的目錄,在Mac環境下,一般可以運行命令:
cd /Users/***/Downloads/apache-activemq-***/bin/macosx
./activemq start
3,啟動成功后,登錄http://localhose:8161/admin/,登陸賬號和密碼都為admin,創建一個queue名為jyQueue。
二、創建Eclipse項目
1,新建項目,並導入對應的jar文件如下圖所示
2,Sender.java和Receiver.java

1 package com.simple.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 public class Sender { 14 private static final int SEND_NUMBER = 5; 15 16 public static void main(String[] args) { 17 // ConnectionFactory :連接工廠,JMS 用它創建連接 18 ConnectionFactory connectionFactory; 19 // Connection :JMS 客戶端到JMS Provider 的連接 20 Connection connection = null; 21 // Session: 一個發送或接收消息的線程 22 Session session; 23 // Destination :消息的目的地;消息發送給誰. 24 Destination destination; 25 // MessageProducer:消息發送者 26 MessageProducer producer; 27 // TextMessage message; 28 // 構造ConnectionFactory實例對象,此處采用ActiveMq的實現jar 29 connectionFactory = new ActiveMQConnectionFactory( 30 ActiveMQConnection.DEFAULT_USER, 31 ActiveMQConnection.DEFAULT_PASSWORD, 32 "tcp://localhost:61616"); 33 try { 34 // 構造從工廠得到連接對象 35 connection = connectionFactory.createConnection(); 36 // 啟動 37 connection.start(); 38 // 獲取操作連接 39 session = connection.createSession(Boolean.TRUE, 40 Session.AUTO_ACKNOWLEDGE); 41 // 獲取session注意參數值xingbo.xu-queue是一個服務器的queue,須在在ActiveMq的console配置 42 destination = session.createQueue("jyQueue"); 43 // 得到消息生成者【發送者】 44 producer = session.createProducer(destination); 45 // 設置不持久化,此處學習,實際根據項目決定 46 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 47 // 構造消息,此處寫死,項目就是參數,或者方法獲取 48 sendMessage(session, producer); 49 session.commit(); 50 } catch (Exception e) { 51 e.printStackTrace(); 52 } finally { 53 try { 54 if (null != connection) 55 connection.close(); 56 } catch (Throwable ignore) { 57 } 58 } 59 } 60 61 public static void sendMessage(Session session, MessageProducer producer) 62 throws Exception { 63 for (int i = 1; i <= SEND_NUMBER; i++) { 64 TextMessage message = session 65 .createTextMessage("ActiveMq 發送的消息" + i); 66 // 發送消息到目的地方 67 System.out.println("發送消息:" + "ActiveMq 發送的消息" + i); 68 producer.send(message); 69 } 70 } 71 }

1 package com.simple.activemq; 2 3 import javax.jms.Connection; 4 import javax.jms.ConnectionFactory; 5 import javax.jms.Destination; 6 import javax.jms.MessageConsumer; 7 import javax.jms.Session; 8 import javax.jms.TextMessage; 9 import org.apache.activemq.ActiveMQConnection; 10 import org.apache.activemq.ActiveMQConnectionFactory; 11 12 public class Receiver { 13 public static void main(String[] args) { 14 // ConnectionFactory :連接工廠,JMS 用它創建連接 15 ConnectionFactory connectionFactory; 16 // Connection :JMS 客戶端到JMS Provider 的連接 17 Connection connection = null; 18 // Session: 一個發送或接收消息的線程 19 Session session; 20 // Destination :消息的目的地;消息發送給誰. 21 Destination destination; 22 // 消費者,消息接收者 23 MessageConsumer consumer; 24 connectionFactory = new ActiveMQConnectionFactory( 25 ActiveMQConnection.DEFAULT_USER, 26 ActiveMQConnection.DEFAULT_PASSWORD, 27 "tcp://localhost:61616"); 28 try { 29 // 構造從工廠得到連接對象 30 connection = connectionFactory.createConnection(); 31 // 啟動 32 connection.start(); 33 // 獲取操作連接 34 session = connection.createSession(Boolean.FALSE, 35 Session.AUTO_ACKNOWLEDGE); 36 // 獲取session注意參數值xingbo.xu-queue是一個服務器的queue,須在在ActiveMq的console配置 37 destination = session.createQueue("jyQueue"); 38 consumer = session.createConsumer(destination); 39 while (true) { 40 //設置接收者接收消息的時間,為了便於測試,這里誰定為100s 41 TextMessage message = (TextMessage) consumer.receive(100000); 42 if (null != message) { 43 System.out.println("收到消息" + message.getText()); 44 } else { 45 break; 46 } 47 } 48 } catch (Exception e) { 49 e.printStackTrace(); 50 } finally { 51 try { 52 if (null != connection) 53 connection.close(); 54 } catch (Throwable ignore) { 55 } 56 } 57 } 58 }
3,先后運行Sender.java和Receiver.java