一:安装ActiveMQ
1.下载链接
官网下载地址 注意:第五代的ActiveMQ需要使用jdk1.8的版本
2.安装测试
打开目录如下:bin-->activemq.bat 运行之后,打开链接
http://localhost:8161/admin/ 默认用户名密码admin,显示如下
则说明安装成功
二:创建简单的案列
1.创建发送者
package com.activemq;
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;
import org.apache.camel.component.jms.JmsProducer;
/**
* 消息的生产者
* @author dexin.qiao
* 2018-1-17
*/
public class JmsProducter {
//默认连接用户名
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 sendMessage(Session session,MessageProducer messageProducer){
for(int i = 0; i<JmsProducter.SENDNUM; i++){
//创建一条文本文件
try {
TextMessage message = session.createTextMessage("ActiveMQ 发送第" + i + "条消息");
System.out.println("发送消息:" + i);
//通过消息生产者发出消息
messageProducer.send(message);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//连接
Connection connection = null;
//会话 发送或者接收消息的线程
Session session;
//消息的目的地
Destination destination;
//消息生产者
MessageProducer messageProducer ;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JmsProducter.USERNAME,
JmsProducter.PASSWORD,JmsProducter.BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建一个叫"你好,我的消息队列"的消息队列
destination = session.createQueue("你好,我的消息队列");
//创建消息生产者
messageProducer = session.createProducer(destination);
//发送消息
sendMessage(session, messageProducer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(connection != null){
try {
connection.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
}
package com.activemq;
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;
import org.apache.camel.component.jms.JmsProducer;
/**
* 消息的生产者
* @author dexin.qiao
* 2018-1-17
*/
public class JmsProducter {
//默认连接用户名
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 sendMessage(Session session,MessageProducer messageProducer){
for(int i = 0; i<JmsProducter.SENDNUM; i++){
//创建一条文本文件
try {
TextMessage message = session.createTextMessage("ActiveMQ 发送第" + i + "条消息");
System.out.println("发送消息:" + i);
//通过消息生产者发出消息
messageProducer.send(message);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//连接
Connection connection = null;
//会话 发送或者接收消息的线程
Session session;
//消息的目的地
Destination destination;
//消息生产者
MessageProducer messageProducer ;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JmsProducter.USERNAME,
JmsProducter.PASSWORD,JmsProducter.BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建一个叫"你好,我的消息队列"的消息队列
destination = session.createQueue("你好,我的消息队列");
//创建消息生产者
messageProducer = session.createProducer(destination);
//发送消息
sendMessage(session, messageProducer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(connection != null){
try {
connection.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
}
2.创建消费者
package com.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 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 consumer;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JmsConsumer.USERNAME,
JmsConsumer.PASSWORD,JmsConsumer.BROKEURL);
try {
//获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个连接"你好,我的消息队列"的消息队列
destination = session.createQueue("你好,我的消息队列");
//创建消息消费者
consumer = session.createConsumer(destination);
while(true){
TextMessage textMessage = (TextMessage) consumer.receive(10000);
if(textMessage != null){
System.out.println("收到的消息:" + textMessage.getText());
}else{
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.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 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 consumer;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JmsConsumer.USERNAME,
JmsConsumer.PASSWORD,JmsConsumer.BROKEURL);
try {
//获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个连接"你好,我的消息队列"的消息队列
destination = session.createQueue("你好,我的消息队列");
//创建消息消费者
consumer = session.createConsumer(destination);
while(true){
TextMessage textMessage = (TextMessage) consumer.receive(10000);
if(textMessage != null){
System.out.println("收到的消息:" + textMessage.getText());
}else{
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
三:运行测试
1.发送者运行
运行结果控制台打印如下
此时我们可以在浏览器中看到消息队列的信息
2.接受者运行
运行结果控制台打印
如下
此时我们可以在浏览器中看到消息队列的信息
发送者发送的消息也已经被消费者消费了
至此,我们的ActiveMQ简单案列已经测试完了