从一个简单的生产者消费者的实际需求出发,学习activemq。
第一步,下载
从官网下载所需的activemq(官网链接:http://activemq.apache.org/download-archives.html),我本地下载的是5.15.4的版本,目前是在win环境上玩耍,so下载的是zip包,解压之后
【注意】
目前只需要关注这么几点
第一:bin文件中有mq的启动文件
第二:mq的运行容器默认的是用jetty
默认的启动端口是8161,默认的管理平台用户名密码是admin。activemq.xml是主要配置,后续会讲解。
第二步,编码
新建一个java工程,工程中新建lib文件夹并将外部的jar引入,具体的要引入的jar包就是activemq解压之后的文件目录中的那个jar包。
一、 创建生产者类Sender
package com.mq.test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
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;
public class Sender {
public static void main(String[] args) {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
"tcp://localhost:61616");
// 第二步创建一个connection连接,并且调用connection的start方法开启连接。
Connection connection = null;
try {
connection = connectionFactory.createConnection();
connection.start();
// 第三步:
Session session = connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);
// 第四步:
Destination destination = session.createQueue("Q1");
// 第五步
MessageProducer messageProducer = session.createProducer(destination);
// 第六步
messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 第七步
for (int i = 0; i <= 5; i++) {
TextMessage message = session.createTextMessage();
message.setText("我是生产者生产的消息内容!...Id:" + i);
messageProducer.send(message);
}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (connection != null) {
// 会递归的关闭连接。。
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
二、创建消费者类
package com.mq.test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
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.ActiveMQConnectionFactory;
public class Receiver {
public static void main(String[] args) {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
"tcp://localhost:61616");
// 第二步创建一个connection连接,并且调用connection的start方法开启连接。
Connection connection = null;
try {
connection = connectionFactory.createConnection();
connection.start();
// 第三步:
Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
// 第四步:
Destination destination = session.createQueue("Q1");
// 第五步
MessageConsumer messageConsumer = session.createConsumer(destination);
// 第七步
while(true){
TextMessage message = (TextMessage) messageConsumer.receive();
if(message == null) break;
System.err.println("收到的内容是:"+message.getText());
}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(connection != null){
// 会递归的关闭连接。。
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}