java 訊息機制 ActiveMQ入門執行個體

來源:互聯網
上載者:User

標籤:cti   out   壓縮   led   解壓縮   stack   ide   throw   use   

1.下載ActiveMQ 
去官方網站下載:http://activemq.apache.org/ 
我下載的時候是 ActiveMQ 5.8.0 Release版 

2.運行ActiveMQ 
解壓縮apache-activemq-5.8.0-bin.zip,然後雙擊apache-activemq-5.5.1\bin\activemq.bat運行ActiveMQ程式。 

啟動ActiveMQ以後,登陸:http://localhost:8161/admin/,建立一個Queue,命名為FirstQueue。 

3.建立Eclipse項目並運行 
建立java project:ActiveMQ-5.8,建立lib檔案夾 
開啟apache-activemq-5.8.0\lib目錄 
拷貝 
activemq-broker-5.8.0.jar 
activemq-client-5.8.0.jar 
geronimo-j2ee-management_1.1_spec-1.0.1.jar 
geronimo-jms_1.1_spec-1.1.1.jar 
slf4j-api-1.6.6.jar 
這5個jar檔案到lib檔案夾中,並Build Path->Add to Build Path 

結構: 

 

Receiver.java 

 

package com.snow.activemq;/** * @Header: Receiver.java * 類描述: * @author: lm * @date 2013-7-17 上午10:52:58 * @Email  * @company 歡 * @addr 北京市朝陽區勁松 */  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 Receiver {    public static void main(String[] args) {        // ConnectionFactory :串連工廠,JMS 用它建立串連        ConnectionFactory connectionFactory;        // Connection :JMS 用戶端到JMS Provider 的串連        Connection connection = null;        // Session: 一個發送或接收訊息的線程        Session session;        // Destination :訊息的目的地;訊息發送給誰.        Destination destination;        // 消費者,訊息接收者        MessageConsumer consumer;        connectionFactory = new ActiveMQConnectionFactory(                ActiveMQConnection.DEFAULT_USER,                ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");        try {            // 構造從工廠得到連線物件            connection = connectionFactory.createConnection();            // 啟動            connection.start();            // 擷取操作串連            session = connection.createSession(Boolean.FALSE,                    Session.AUTO_ACKNOWLEDGE);            // 擷取session注意參數值xingbo.xu-queue是一個伺服器的queue,須在在ActiveMq的console配置            destination = session.createQueue("FirstQueue");            consumer = session.createConsumer(destination);            while (true) {                // 設定接收者接收訊息的時間,為了便於測試,這裡誰定為100s                TextMessage message = (TextMessage) consumer.receive(100000);                if (null != message) {                    System.out.println("收到訊息" + message.getText());                } else {                    break;                }            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if (null != connection)                    connection.close();            } catch (Throwable ignore) {            }        }    }  }

 



Sender.java 

package com.snow.activemq;/**  * @Header: Sender.java  * 類描述:  * @author: lm  * @date 2013-7-17 上午10:52:42  * @Email   * @company 歡  * @addr 北京市朝陽區勁松  */  import javax.jms.Connection;  import javax.jms.ConnectionFactory;  import javax.jms.DeliveryMode;  import javax.jms.Destination;  import javax.jms.MessageProducer;  import javax.jms.Session;  import javax.jms.TextMessage;  import org.apache.activemq.ActiveMQConnection;  import org.apache.activemq.ActiveMQConnectionFactory;    public class Sender {      private static final int SEND_NUMBER = 5;        public static void main(String[] args) {          // ConnectionFactory :串連工廠,JMS 用它建立串連          ConnectionFactory connectionFactory; // Connection :JMS 用戶端到JMS          // Provider 的串連          Connection connection = null; // Session: 一個發送或接收訊息的線程          Session session; // Destination :訊息的目的地;訊息發送給誰.          Destination destination; // MessageProducer:訊息寄件者          MessageProducer producer; // TextMessage message;          // 構造ConnectionFactory執行個體對象,此處採用ActiveMq的實現jar          connectionFactory = new ActiveMQConnectionFactory(                  ActiveMQConnection.DEFAULT_USER,                  ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");          try { // 構造從工廠得到連線物件              connection = connectionFactory.createConnection();              // 啟動              connection.start();              // 擷取操作串連              session = connection.createSession(Boolean.TRUE,                      Session.AUTO_ACKNOWLEDGE);              // 擷取session注意參數值xingbo.xu-queue是一個伺服器的queue,須在在ActiveMq的console配置              destination = session.createQueue("FirstQueue");              // 得到訊息產生者【寄件者】              producer = session.createProducer(destination);              // 設定不持久化,此處學習,實際根據項目決定              producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);              // 構造訊息,此處寫死,項目就是參數,或者方法擷取              sendMessage(session, producer);              session.commit();          } catch (Exception e) {              e.printStackTrace();          } finally {              try {                  if (null != connection)                      connection.close();              } catch (Throwable ignore) {              }          }      }        public static void sendMessage(Session session, MessageProducer producer)              throws Exception {          for (int i = 1; i <= SEND_NUMBER; i++) {              TextMessage message = session.createTextMessage("ActiveMq 發送的訊息"                      + i);              // 發送訊息到目的地方                System.out.println("發送訊息:" + "ActiveMq 發送的訊息" + i);              producer.send(message);          }      }  }

5.測試過程 
先運行:Receiver.java 
再運行:Sender.java 

可以看到結果 
Sender運行後: 
發送訊息:ActiveMq 發送的訊息1 
發送訊息:ActiveMq 發送的訊息2 
發送訊息:ActiveMq 發送的訊息3 
發送訊息:ActiveMq 發送的訊息4 
發送訊息:ActiveMq 發送的訊息5 

Receiver運行後: 
收到訊息ActiveMq 發送的訊息1 
收到訊息ActiveMq 發送的訊息2 
收到訊息ActiveMq 發送的訊息3 
收到訊息ActiveMq 發送的訊息4 
收到訊息ActiveMq 發送的訊息5 

要想看到不同的輸出內容,通過點擊如的按鈕切換console 

 


在Receiver.java中,可以設定一個時間,比如receive(500000),如下代碼所示: 

TextMessage message = (TextMessage) consumer.receive(500000);  

這個時候運行Receiver.java的話,會使得這個Receiver.java一直運行500秒,在eclipse中可以發現: 




點擊那個紅色方塊可以手動停止運行程式 

java 訊息機制 ActiveMQ入門執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.