耀眼的橘子的gravatar头像
耀眼的橘子 2016-10-25 17:24:49
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文件,项目结构如下图所示:

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

 

生成消息

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条。

 

 

这样入门demo 就做完了啦,其实这些网上都有例子。我只是想把它记录下来,以后就不用总是百度了。看看自己的博客就好了。这样也挺方便的。如果能帮上路人的忙,我就更开心啦!


打赏
最近浏览
2639064372  LV3 2020年3月6日
那一丝涟漪  LV8 2020年2月29日
1jj15j  LV6 2019年10月14日
zhang_zhiwei2 2019年7月18日
暂无贡献等级
fazstart  LV2 2019年2月14日
wbbhappy  LV13 2019年1月18日
xiaoyong812  LV5 2018年12月20日
luo1314  LV1 2018年4月20日
kenpfang  LV18 2018年3月15日
SamMing588  LV1 2018年3月1日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友