一个小白的自我记录。
首先需要在你电脑的环境变量中配置好JAVA_HOME,这个不要忘记。
然后去这个地址去下载你想要的ActiveMQ版本。http://activemq.apache.org/download-archives.html
下载后直接解压即可。
根据操作系统的位数选择要使用win64或者win32,我的系统位数是64,点进去后,双击activemq.bat。
然后再按浏览器上输入 http://localhost:8161/admin/ 会弹出一个Window安全的对话框,用户名和密码默认都是admin,输入进去即可。
如果双击activemq.bat后启动不成功,先检查一个你的JAVA_HOME的配置,我刚开始也是不好用,所以用了个绝招,换了个版本就好了。小白一个,其中的道理不是很懂。
如果能够出现这个页面就说明环境已经搭建好了
既然环境已经搭建好了 剩下的就是开始搞一搞项目了。
创建一个java项目,在你下载的ActiveMQ的根目录有一个activemq-all-5.9.0.jar包,将其导入到你的项目。
1,建立一个生成者、发送者,用来发送消息
package com.activemq.producer;
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;
/**
* 消息生产者、发送者
*
* @author Administrator
*
*/
public class JMSProducer {
public static void main(String[] args) {
// 连接工厂
ConnectionFactory connectionfactory = null;
// 连接
Connection connection = null;
// 会话 接收或发送消息的线程
Session session = null;
// 消息的目的地
Destination destination = null;
// 消息生产者、发送者
MessageProducer messageProducer;
try {
// 实例化连接工厂
connectionfactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER, // 默认的连接用户名
ActiveMQConnection.DEFAULT_PASSWORD, // 默认的连接密码
ActiveMQConnection.DEFAULT_BROKER_URL); // 默认的连接地址
// 创建连接
connection = connectionfactory.createConnection();
// 启动连接
connection.start();
// 创建Session 第一个参数是指是否开启事务, 第二个参数是指验证方式
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
// 创建消息队列,这个名称在后面能够用到
destination = session.createQueue("myFirstMQ");
// 创建消息生成者
messageProducer = session.createProducer(destination);
// 循环发送信息
for (int i = 0; i < 10; i++) {
// 发送一个简单消息
TextMessage textMessage = session
.createTextMessage("ActiveMQ send " + i);
System.out.println("ActiveMQ send " + i);
messageProducer.send(textMessage);
}
// 提交
session.commit();
} catch (Exception 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();
}
}
}
}
}
启动这个类以后,在控制台可以看到发送的消息,然后到ActiveMQ的页面中可以看见发送成功与否
2,建立一个监听的类实现MessageListener接口
package com.activemq.listener;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
/**
* 监听器
*
* @author Administrator
*
*/
public class Listener implements MessageListener {
public void onMessage(Message message) {
// TODO Auto-generated method stub
try {
System.out.println("收到的消息:" + ((TextMessage) message).getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3,当消息发送以后,我们可以去ActiveMQ这个服务器上去监听是否有消息可以让我们消费,消费消息也就是接收消息。建立一个消息的消费者类。
package com.activemq.consumer;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import com.activemq.listener.Listener;
/**
* 接收消息监听的方式
*
* @author Administrator
*
*/
public class JMSConsumer2 {
// 默认的连接用户名
// 默认的连接密码
// 默认的连接地址
public static void main(String[] args) {
// 连接工厂
ConnectionFactory connectionfactory;
// 连接
Connection connection = null;
// 会话 接收或发送消息的线程
Session session;
// 消息的目的地
Destination destination;
// 消息的消费者
MessageConsumer messageConsumer;
try {
// 实例化连接工厂
connectionfactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL);
// 创建连接
connection = connectionfactory.createConnection();
// 启动连接
connection.start();
// 创建Session ,消费的清空下要吧事务关闭
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
// 创建消息队列 要与发送消息的queue相同,也就也说,你可以指定要消费的对象。
destination = session.createQueue("myFirstMQ");
// 创建消息消费者
messageConsumer = session.createConsumer(destination);
messageConsumer.setMessageListener(new Listener());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}