消息隊列之ActiveMQ簡單環境搭建


准備:

   環境:win7,Eclipse,jdk1.8

   ActiveMQ版本:ActiveMQ 5.9.0 Release下載地址:http://activemq.apache.org/download-archives.html

 

開始:

  1.下載完后進行解壓,解壓完找到其中的activemq-all-5.9.0.jar包.

  2.Eclipse創建一個java項目,導入上面這個jar包

  3.創建生產者和消費者類

 

 

  生產者

package com.sinosoft.activemq;


import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JMSProducer {
	
	//默認連接用戶名
	private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
	//默認連接密碼
	private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
	//默認連接地址
	private static final String BROKERURL = ActiveMQConnection.DEFAULT_BROKER_URL;
	//發送的消息數量
	private static final int SENDNUM = 10;
	
	
	public static void main(String[] args) {
		//連接工廠
		ConnectionFactory connectionFactory;
		//連接
		Connection connection = null;
		//會話,接收或者發送消息的線程
		Session session;
		//消息的目的地
		Destination destination;
		//消息生產者
		MessageProducer messageProducer;
		//實例化連接工廠
		connectionFactory = new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKERURL);
		
		try {
			//通過連接工廠獲取連接
			connection = connectionFactory.createConnection();
			//啟動連接
			connection.start();
			//創建session
			session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			//創建一個名稱為Hello World!的消息隊列
			destination = session.createQueue("Hello World");
			//創建消息生產者
			messageProducer = session.createProducer(destination);
			//發送消息
			sendMessage(session,messageProducer);
			
			session.commit();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			if(connection != null){
				try {
					connection.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
	
	/**
	 * 發送消息
	 * @param session
	 * @param messageProducer 消息生產者
	 * @throws Exception
	 */
	public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
		for (int i = 0; i < JMSProducer.SENDNUM; i++) {
			//創建一條文本消息
			TextMessage message = session.createTextMessage("activemq 發送消息:" + i);
			System.err.println("發送消息:activemq 發送消息:" + i);
			//通過消息生產者發出消息
			messageProducer.send(message);
		}
	}
	
}

 

  

  消費者

    

package com.sinosoft.activemq;

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 JMSConsumer {

	//默認連接用戶名
	private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
	//默認連接密碼
	private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
	//默認連接地址
	private static final String BROKERURL = ActiveMQConnection.DEFAULT_BROKER_URL;
	
	public static void main(String[] args) {
		//連接工廠
		ConnectionFactory connectionFactory;
		//連接
		Connection connection = null;
		//會話,接收或者發送消息的線程
		Session session;
		//消息目的地
		Destination destination;
		//消息的消費者
		MessageConsumer messageConsumer;
		//實例化連接工廠
		connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKERURL);
		
		try {
			//通過工廠獲取連接
			connection = connectionFactory.createConnection();
			//啟動連接
			connection.start();
			//創建會話
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			//創建一個連接Hello World!的消息隊列
			destination = session.createQueue("Hello World");
			//創建消息的消費者
			messageConsumer = session.createConsumer(destination);
			
			while(true){
				TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
				if (textMessage != null) {
					System.err.println("收到的消息:" + textMessage.getText());
				} else {
					break;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

  

 從解壓的壓縮包找到bin目錄下的activemq.bat並運行它

 

結果應該如下:

  

然后進入紅線標出來的地址,出現下面頁面表示已經啟動了ActiveMQ的服務

 剛才運行activemq.bat成功后,默認也運行了activemq-admin.bat,所以進入地址http://localhost:8161/admin/

 這時需要輸入用戶名和密碼,都是admin,成功后會進入到以下頁面

 

 運行生產者類

  控制台如下:

  

頁面上選擇queues,發現

 

再運行消費者類后

  控制台

再看刷新Queues頁面,發現

 

 

 

 就算是點對點的消息隊列發送和接收成功了.

 如果將消費者類這里改為true

 

那么最終運行完的結果就是

 

 總結,消息隊列,任重而道遠,需要慢慢探索,技術性東西都是,勤學一時,受用終身

 


免責聲明!

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



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