一、ActiveMQ的介绍
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范(持久化,XA消息,事务)的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
二、ActiveMQ的安装
1、安装jdk并配置环境变量,我这里安装的是jdk1.7
2、去官网下载ActiveMQ,下载地址:http://activemq.apache.org/download-archives.html 我下载的5.8.0的版本的
3、下载完apache-activemq-5.8.0-bin.zip后解压
4、进入bin目录,根据自己系统是32还是64位选择不同目录启动,我的是64位的进入win64,运行activemq.bat
5、启动完成后在浏览器输入:http://localhost:8161/admin 默认用户名密码都是admin
三、简单的点对点的队列的代码实现
生产者代码:
public static void main(String[] args) {
ConnectionFactory connectionFaction;
Connection connection;
Session session;
Destination destination;
MessageProducer producer;
connectionFaction = new ActiveMQConnectionFactory("admin", "admin", "tcp://127.0.0.1:61616");
try {
connection = connectionFaction.createConnection();
connection.start();
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
destination = session.createQueue("test-queue");
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
for (int i = 0; i < 10; i++) {
Thread.sleep(1000);
TextMessage msg = session.createTextMessage("生产消息"+i);
producer.send(msg);
}
producer.close();
System.out.println("生产者完毕");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
消费者代码:
public static void main(String[] args) {
ConnectionFactory connectionFaction;
Connection connection;
Session session;
Destination destination;
MessageConsumer consumer;
connectionFaction = new ActiveMQConnectionFactory("admin", "admin", "tcp://127.0.0.1:61616");
try {
connection = connectionFaction.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("test-queue");
consumer = session.createConsumer(destination);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
TextMessage msg = (TextMessage)message;
if(msg!=null){
System.out.println(msg.getText());
}else{
System.out.println("没有收到消息");
}
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
可以看到当前队列有一个消费者,并且消费了10个对象
本篇博文主要介绍ActiveMQ的安装以及点对点消息模型的发送,当然ActiveMQ的功能还有很多,这里只介绍它的基本使用