ActiveMQ的学习

好吧,我承认自己在写blog方面很不好,经常一个链接或者文章直接粘贴复制过来,一点自己的读后感都没有,慢慢改正咯!

ActiveMQ这个东西,我之前都不知道,是我的领导(old)在QQ上跟我说的,他们的系统用到了这个方面知识,他叫我有时间就了解一下,故而baidu看了相关例子。

来源:http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html

1.下载ActiveMQ

去官方网站下载:http://activemq.apache.org/ (我是直接百度下载的,没去官网)

2.运行ActiveMQ

解压缩apache-activemq-5.2.0-bin.zip(上传不了),然后双击apache-activemq-5.2.0\bin\activemq.bat运行ActiveMQ程序。

启动ActiveMQ以后,登陆:http://localhost:8161/admin/,如图mq.png所属

3.创建Eclipse项目并运行

创建project:ActiveMQ,并导入apache-activemq-5.2.0\lib目录下需要用到的jar文件(反正就是导入需要用到的jar包,我也忘记了是不是在这个目录下找到的),项目结构如ActiveMQ.png所示:

3.1.Sender.java

package com.dxy.activemq;

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;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//连接工厂,JMS用它创建连接
		ConnectionFactory connectionFactory;
		//JMS客户端到JMS Provider的连接
		Connection connection=null;
		//一个发送或接收消息的线程
		Session session;
		//消息的目的地;消息发送给谁
		Destination destination;
		MessageProducer producer;
		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);
        	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);
		}
	}

}

3.2.Receiver.java

 
package com.dxy.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 Receiver {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
         ConnectionFactory connectionFactory;
         Connection connection=null;
         Session session;
         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);
        	 destination=session.createQueue("FirstQueue");
        	 consumer=session.createConsumer(destination);
        	 while(true){
        		 TextMessage message=(TextMessage)consumer.receive(500000);
        		 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){
        		 
        	 }
         }
	}

}
 

3.测试过程

在eclipse里面先启动receiver服务,再启动sender服务,在控制台上打印如下信息:

sender服务对应的控制台:

发送信息:ActiveMq 发送消息1
发送信息:ActiveMq 发送消息2
发送信息:ActiveMq 发送消息3
发送信息:ActiveMq 发送消息4
发送信息:ActiveMq 发送消息5
receiver服务对应的控制台:

收到消息ActiveMq 发送的消息1
收到消息ActiveMq 发送的消息2
收到消息ActiveMq 发送的消息3
收到消息ActiveMq 发送的消息4
收到消息ActiveMq 发送的消息5

 ps:祝大家好好学习,天天向上!!!

猜你喜欢

转载自dongxylove.iteye.com/blog/2261535