您的位置:首页 > 其它

快速上手MQ之activeMQ(1)--Demo

2017-11-30 16:06 441 查看
activeMQ大家应该有所耳闻,MQ(Message Queue)顾名思义消息队列,说白了就是一个消息的接受和转发的容器,可用于消息推送,ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS实现。

下面我们开始着手玩一下

1、环境搭建

1.1、官网下载activeMQ :http://activemq.apache.org/

1.2、解压文件:







启动文件在bin文件夹里面,文件夹有win32和win64两个文件夹,点击启动里面的activemq.bat

1.3启动activeMQ



ActiveMQ默认使用的TCP连接端口是61616,后台监控访问地址为:http://127.0.0.1:8161/admin/ 用户和密码默认都是admin

1.4访问监控



ok这样我们环境就算搭建完了!

2、编写activeMQ例子

2.1新建maven项目,目录结构如下



2.2修改pom.xml

<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.9.0</version>
</dependency>
</dependencies>


说明:仅一个jar包即可

2.3新建信息发布类producer

package com.cwh.consumer;
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;
/**
* 消息的生产者(发送者)
*
*/
public class JMSProducer {
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;
//消息生产者
MessageProducer messageProducer;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建一个名称为HelloWorld的消息队列
destination = session.createQueue("HelloWorld");
//创建消息生产者
messageProducer = session.createProducer(destination);
//发送消息
//创建一条文本消息
TextMessage message = session.createTextMessage("ActiveMQ 发布消息");
//通过消息生产者发出消息
messageProducer.send(message);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(connection != null){
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}

}
}


2.4新建信息消费者consumer

package com.cwh.producer;

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 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 messageConsumer;//消息的消费者
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个连接HelloWorld的消息队列
destination = session.createQueue("HelloWorld");
//创建消息消费者
messageConsumer = session.createConsumer(destination);
while (true) {
TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
if(textMessage != null){
System.out.println("收到的消息:" + textMessage.getText());
}else {
break;
}
}

} catch (JMSException e) {
e.printStackTrace();
}

}
}


2.5 运行启动producer,然后查看activeMQ监控后台



我们可以看到发布了一个helloworld的队列,发布信息有1条

2.6运行启动消费者consumer

       控制台可看到收到发布者发布的信息:



查看activeMQ监控器发现发布消息的条数已结为0:



OK这样我们也算是上手了activeMQ了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  activeMQ JMS