ActiveMQ的入門demo


 

步驟: 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM