ActiveMq学习简单学习(1)Demo
ActiveMq学习简单学习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、如图所示就是启动成功
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 自己的服务可以查看自己产生的消息 ,消费的消息。