ActiveMq学习简单学习(1)Demo

基本条件

搭建之前有一定java 开发基础

下载ActiveMq

1、最新下载地址版本:http://activemq.apache.org/download.html
2、解压即可。
3、启动ActiveMq 服务。windows下双击D:\ACTIVEMQ\apache-activemq-5.15.6\bin\win64 下的activemq 脚本 。也可以 在该目录 通过linux命令 ./activemq start
4、如图所示就是启动成功
ActiveMq学习简单学习(1)Demo

maven 整合mq 的jar

<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-all -->
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-all</artifactId>
			<version>5.15.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.xbean/xbean-spring -->
		<dependency>
			<groupId>org.apache.xbean</groupId>
			<artifactId>xbean-spring</artifactId>
			<version>3.7</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

Java 代码以及注释

1、常量工具类

package com.dairujie.utils;

import org.apache.activemq.ActiveMQConnection;
/**
 * 
 * @ClassName:  ConstantUtil   
 * @Description:TODO(常量工具类)   
 * @author: drj 
 * @date:   2018年10月13日 下午5:10:51   
 *     
 * @Copyright: 2018 
 *
 */
public class ConstantUtil {
	public static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL;
	public static final String TITLE = "DRJ";
}
2、发送类

    package com.dairujie.send;
    
    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.ActiveMQConnectionFactory;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.dairujie.utils.ConstantUtil;
    
    /**
     * 
     * @ClassName: MqSender
     * @Description:TODO(消息发送者)
     * @author: drj
     * @date: 2018年10月7日 下午4:16:03
     * 
     * @Copyright: 2018
     *
     */
    public class MqSender {
    	private final static Logger logger = (Logger) LoggerFactory.getLogger(MqSender.class);
    
    	public static void main(String[] args) {
    		// 初始化连接工厂       
    		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ConstantUtil.BROKER_URL);// 获得连接     
    		Connection conn = null;
    		Session session = null;
    		MessageProducer producer = null;
    		try {
    			conn = connectionFactory.createConnection();
    			conn.start();
    			// 创建Session,此方法第一个参数表示会话是否在事务中执行,true的话 第二个参数无效。第二个参数设定会话的应答模式
    			//  AUTO_ACKNOWLEDGE 当客户成功从recrive 返回时 自动确认客户收到消息。
    			// CLIENT_ACKNOWLEDGE    message.acknowledge(); 可以将全部消费的信息提交  
    			session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    			// 创建队列     
    			Destination dest = session.createQueue(ConstantUtil.TITLE);
    			// 通过session可以创建消息的生产者       
    			producer = session.createProducer(dest);
    			for (int i = 0; i < 5; i++) {// 初始化一个mq消息           
    				TextMessage message = session.createTextMessage("HELLO WOLRD" + i);
    				// 发送消息           
    				producer.send(message);
    			}
    
    			// 关闭mq连接       
    		} catch (JMSException e) {
    			logger.error("ERROR IS " + e);
    		} finally {
    			if (session != null) {
    				try {
    					//session.commit();//createSession(true, Session.AUTO_ACKNOWLEDGE);第一个参数是true需要提交
    					session.close();
    				} catch (JMSException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    
    			}
    			if (producer != null) {
    				try {
    					producer.close();
    				} catch (JMSException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    			if (conn != null) {
    				try {
    					conn.close();
    				} catch (JMSException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    }

3、消费类

package com.dairujie.send;

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.ActiveMQConnectionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.dairujie.utils.ConstantUtil;

/**
 * 
 * @ClassName: MqSender
 * @Description:TODO(消息发送者)
 * @author: drj
 * @date: 2018年10月7日 下午4:16:03
 * 
 * @Copyright: 2018
 *
 */
public class MqSender {
	private final static Logger logger = (Logger) LoggerFactory.getLogger(MqSender.class);

	public static void main(String[] args) {
		// 初始化连接工厂       
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ConstantUtil.BROKER_URL);// 获得连接     
		Connection conn = null;
		Session session = null;
		MessageProducer producer = null;
		try {
			conn = connectionFactory.createConnection();
			conn.start();
			// 创建Session,此方法第一个参数表示会话是否在事务中执行,true的话 第二个参数无效。第二个参数设定会话的应答模式
			//  AUTO_ACKNOWLEDGE 当客户成功从recrive 返回时 自动确认客户收到消息。
			// CLIENT_ACKNOWLEDGE    message.acknowledge(); 可以将全部消费的信息提交  
			session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
			// 创建队列     
			Destination dest = session.createQueue(ConstantUtil.TITLE);
			// 通过session可以创建消息的生产者       
			producer = session.createProducer(dest);
			for (int i = 0; i < 5; i++) {// 初始化一个mq消息           
				TextMessage message = session.createTextMessage("HELLO WOLRD" + i);
				// 发送消息           
				producer.send(message);
			}

			// 关闭mq连接       
		} catch (JMSException e) {
			logger.error("ERROR IS " + e);
		} finally {
			if (session != null) {
				try {
					//session.commit();//createSession(true, Session.AUTO_ACKNOWLEDGE);第一个参数是true需要提交
					session.close();
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
			if (producer != null) {
				try {
					producer.close();
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

运行截图

1、http://127.0.0.1:8161/admin/queues.jsp MQ 自己的服务可以查看自己产生的消息 ,消费的消息。
ActiveMq学习简单学习(1)Demo