天天看點

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

   1.下載下傳ActiveMQ

我下載下傳的時候是 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 

結構如圖:

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

Sender.java

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

package com.lm.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;  

publicclass Sender {  

privatestaticfinalint SEND_NUMBER = 5;  

publicstaticvoid 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) {  

           }  

       }  

   }  

publicstaticvoid 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);  

}  

Receiver.java

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

* @Header: Receiver.java

* @date 2013-7-17 上午10:52:58

import javax.jms.MessageConsumer;  

publicclass Receiver {  

       ConnectionFactory connectionFactory;  

// Connection :JMS 用戶端到JMS Provider 的連接配接

       Connection connection = null;  

// Session: 一個發送或接收消息的線程

       Session session;  

// Destination :消息的目的地;消息發送給誰.

       Destination destination;  

// 消費者,消息接收者

       MessageConsumer consumer;  

// 構造從工廠得到連接配接對象

           session = connection.createSession(Boolean.FALSE,  

           consumer = session.createConsumer(destination);  

while (true) {  

// 設定接收者接收消息的時間,為了便于測試,這裡誰定為100s

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

if (null != message) {  

                   System.out.println("收到消息" + message.getText());  

               } else {  

break;  

               }  

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

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

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

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

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

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

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

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

黑色頭發:http://heisetoufa.iteye.com/  

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

大小: 26.1 KB

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

大小: 50.2 KB

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

大小: 12.8 KB

本文轉自yunlielai51CTO部落格,原文連結:http://blog.51cto.com/4925054/1283369,如需轉載請自行聯系原作者

繼續閱讀