1.新建javaSE工程--引入jar包
![](https://i-blog.csdnimg.cn/blog_migrate/c9e110d756ff4209a67b02a8ac27be53.png)
2.开始写代码
2.1 创建消息生产者
/**
* <p>Title: MessageProducer.java</p>
* <p>Description: </p>
* @author lihongjie
* @date 2018年7月15日
* @version 1.0
*/
package com.zit.mq;
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;
/**
* <p>Title: MessageProducer</p>
* <p>Description:消息生产者 </p>
* @author lihongjie
* @date 2018年7月15日
*/
public class MyMessageProducer {
// 默认的连接用户名
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(USERNAME, PASSWORD, BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建消息队列
destination = session.createQueue("消息队列1");
//创建消息生产者
messageProducer = session.createProducer(destination);
//发送消息
sendMessage(session, messageProducer);
session.commit();
} catch (JMSException e) {
e.printStackTrace();
}
//关闭资源
finally {
if(null != connection)
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
/**
*
* <p>Title: sendMessage</p>
* <p>Description: 发送消息</p>
* @param session
* @param messageProducer
*/
public static void sendMessage(Session session, MessageProducer messageProducer) {
try {
for (int i = 0; i < SENDNUM; i++) {
TextMessage textMessage = session.createTextMessage("ActiveMQ发送的第"+i+"条消息!");
System.out.println("发送消息"+i+"条!");
messageProducer.send(textMessage);
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
2.2 创建消息消费者--第一种方式
/**
* <p>Title: MessageProducer.java</p>
* <p>Description: </p>
* @author lihongjie
* @date 2018年7月15日
* @version 1.0
*/
package com.zit.mq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* <p>Title: MessageProducer</p>
* <p>Description:消息消费者 </p>
* @author lihongjie
* @date 2018年7月15日
*/
public class MyMessageConsumer {
// 默认的连接用户名
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 ;//消息的目的地
MessageConsumer messageConsumer;//消息消费者
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
//创建消息队列
destination = session.createQueue("消息队列1");
//创建消息消费者
messageConsumer = session.createConsumer(destination);
//接收消息
while (true) {
TextMessage textMessage = (TextMessage)messageConsumer.receive(100000);
if(null != textMessage) {
System.out.println("收到的消息是:"+textMessage);
}else {
continue;
}
}
} catch (JMSException e) {
e.printStackTrace();
}
//关闭资源
finally {
if(null != connection)
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
2.3 创建消息消费者--第二种方式(优化)--监听
2.3.1创建监听
/**
* <p>Title: MyListener.java</p>
* <p>Description: </p>
* @author lihongjie
* @date 2018年7月15日
* @version 1.0
*/
package com.zit.mq;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
/**
* <p>Title: MyListener</p>
* <p>Description:消息监听 </p>
* @author lihongjie
* @date 2018年7月15日
*/
public class MyListener implements MessageListener {
/* (non-Javadoc)
* <p>Title: onMessage</p>
* <p>Description: </p>
* @param message
* @see javax.jms.MessageListener#onMessage(javax.jms.Message)
*/
@Override
public void onMessage(Message message) {
try {
System.out.println("通过监听,监听收到的消息:"+((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
2.3.2 创建消费者--通过监听的方式进行消费
/**
* <p>Title: MessageProducer.java</p>
* <p>Description: </p>
* @author lihongjie
* @date 2018年7月15日
* @version 1.0
*/
package com.zit.mq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* <p>Title: MessageProducer</p>
* <p>Description:消息消费者 --优化</p>
* @author lihongjie
* @date 2018年7月15日
*/
public class MyMessageConsumer2 {
// 默认的连接用户名
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 ;//消息的目的地
MessageConsumer messageConsumer;//消息消费者
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(MyMessageConsumer2.USERNAME, MyMessageConsumer2.PASSWORD, MyMessageConsumer2.BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
//创建消息队列
destination = session.createQueue("消息队列1");
//创建消息消费者
messageConsumer = session.createConsumer(destination);
//接收消息--注册消息监听
messageConsumer.setMessageListener(new MyListener());
/*TextMessage textMessage = (TextMessage)messageConsumer.receive(100000);
System.out.println("第二个消费者,收到的消息是:"+textMessage);*/
} catch (JMSException e) {
e.printStackTrace();
}
}
}
2.4 查询浏览器界面
![](https://i-blog.csdnimg.cn/blog_migrate/1aade84c85c5cb2ed9ff45d8fd3bc40c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0512a511afb2585e245c7bd0c3491223.png)
![](https://i-blog.csdnimg.cn/blog_migrate/598481ff5947693168800cb1217b8d1f.png)