apache activemq (消息队列)入门部署demo

apache activemq (消息队列)入门部署demo

1.去官方网站下载:http://activemq.apache.org/

2.运行ActiveMQ

解压缩 apache-activemq-5.14.1-bin,然后双击 apache-activemq-5.14.1\bin\win64\wrapper.exe  (如果你的电脑也是64位 )运行ActiveMQ程序

3.创建Eclipse项目并运行

创建project:ActiveMQ-5.5,

并导入apache-activemq-5.14.1\lib目录下需要用到的jar文件,项目结构如下图所示:

 (附件)

生成消息

package com.lcl.producer;
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 BROKEURL =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.BROKEURL);
	
		
		try {
			//通过连接工厂获取连接
			connection = connectionFactory.createConnection();
			//启动连接
			connection.start();
			//创建session
			session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			
			//创建一个名字为HelloWord的消息队列
			destination = session.createQueue("HelloWord");
			//创建消息生产者
			messageProducer = session.createProducer(destination);
			
			//发送消息
			sendMseeage(session,messageProducer);
			
			session.commit();
		} catch (JMSException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	
	}
	
	/**
	 * @throws JMSException 
	 * 
	* @Title: sendMseeage 
	* @Description: 发送消息 
	* @param @param session
	* @param @param messageProducer    消息生产者额 
	* @return void     
	* @throws
	 */
	private static void sendMseeage(Session session,
			MessageProducer messageProducer) throws JMSException {
		for(int i=0;i<JMSproducer.SENDNUM;i++){
			//创建一跳文本消息
			TextMessage message = session.createTextMessage("ActiveMQ 发送消息"+i);
			System.out.println("发送消息:Activemq 发送消息" + i);
			messageProducer.send(message);
		}
	}
}

 当消息生成以后去activemq的服务器查看,会发现生成一条消息,未读10条。

package com.lcl.consumer;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
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 BROKEURL =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.BROKEURL);
		try {
			//通过连接工厂获取连接
			connection = connectionFactory.createConnection();
			//启动连接
			connection.start();
			//创建session
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			//创建一个连接HelloWord的消息队列
			destination =session.createQueue("HelloWord");
			//创建消息的消费者
			messageConsumer = session.createConsumer(destination);
			
			while(true){
				TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
				if(textMessage != null){
					System.out.println("收到的消息:" + textMessage.getText());
				}else{
					break;
				}
			}
			
		} catch (JMSException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}

 这个时候再去activemq的服务器查看,会发现刚才生成的消息,未读0条,已读10条。

猜你喜欢

转载自kissuyoyo.iteye.com/blog/2335273