消息队列-ActiveMQ的使用(Windows系统)
1.去官网http://activemq.apache.org/下载解压文件apache-activemq-5.15.2-bin.zip,如下图所示:
2.下载完成后,解压到本地目录(我放在了D盘),我的电脑是Windows系统64位的,所以进入
D:\apache-activemq-5.15.2-bin\apache-activemq-5.15.2\bin\win64 的文件夹,找到activemq.bat,如下图所示:
3.双击activemq.bat,进入消息队列,展示如下图所示:
ActiveMQ默认使用的TCP连接端口是61616,启动后,登录http://localhost:8161/admin/ ,默认用户名和密码为admin,admin,进入控制台功能,如下图所示:
4.打开Eclipse,建立名为MQ的Java项目,使用Maven管理依赖,所以创建pom.xml,代码如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>activemq-sample</groupId>
<artifactId>activemq-sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>activemq-sample</name>
<description>an activemq practice</description>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!-- activemq-core 5.7.0 使用bunble打包,需要添加相关插件 -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- activemq的maven依赖 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
<type>bundle</type>
</dependency>
</dependencies>
</project>
5.在项目下建立lib文件夹,放activemq-all-5.15.2.jar,并配置到路径中,此jar包可在解压文件中找到,如下图所示:
6.消费者MsgConsumer类代码,如下:
package mq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MsgConsumer implements MessageListener {
private static final String BROKER_URL = "failover://tcp://localhost:61616";
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(BROKER_URL);
// 获得连接
Connection conn = connectionFactory.createConnection();
// start
conn.start();
// 创建Session,此方法第一个参数表示会话是否在事务中执行,第二个参数设定会话的应答模式
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建队列
Destination dest = session.createQueue("test-queue");
// 创建消息生产者
MessageConsumer consumer = session.createConsumer(dest);
// 初始化MessageListener
MsgConsumer msgConsumer = new MsgConsumer();
// 给消费者设定监听对象
consumer.setMessageListener(msgConsumer);
}
/**
* 消费者需要实现MessageListener接口 接口有一个onMessage(Message message)需要在此方法中做消息的处理
*/
@Override
public void onMessage(Message msg) {
TextMessage txtMessage = (TextMessage) msg;
try {
System.out.println("get message:" + txtMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
7.生产者MsgProducer类代码,如下:
package 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.ActiveMQConnectionFactory;
public class MsgProducer {
// 如果你在本地启动,可以直接使用空的ActiveMQConnectionFactory构造函数
private static final String BROKER_URL = "failover://tcp://localhost:61616";
public static void main(String[] args) throws JMSException, InterruptedException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(BROKER_URL);
// 获得连接
Connection conn = connectionFactory.createConnection();
// start
conn.start();
// 创建Session,此方法第一个参数表示会话是否在事务中执行,第二个参数设定会话的应答模式
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建队列
Destination dest = session.createQueue("test-queue");
// 创建消息生产者
MessageProducer producer = session.createProducer(dest);
for (int i = 0; i < 100; i++) {
// 初始化一个mq消息
TextMessage message = session.createTextMessage("这是第 " + i + " 条消息!");
// 发送消息
producer.send(message);
System.out.println("send message:消息" + i);
// 暂停3秒
Thread.sleep(3000);
}
// 关闭mq连接
conn.close();
}
}
8.配置jdk版本
此项目需要系统配置和Eclipse配置jdk版本相同,我使用的是jdk1.8,三处需要配置检查,避免出现报错
1)鼠标右键点击MQ项目,进入properties,选中jdk版本为1.8,如下图所示:
2)工具栏Windows,选择Preference-Java-Complier,jdk版本为1.8,如下图所示:
3)计算机的环境变量,配置为jdk1.8所在的目录,如下图所示:
9.先运行消费者MsgConsumer,在运行生产者MsgProducer,仔细观察规律(建议在MsgConsumer下debug下断点),activeMQ使用中,结果如下图所示:
通过这个实例可以对ActiveMQ的应用有一个简单的了解。
上一篇: PHP中使用ActiveMQ实现消息队列
下一篇: 【消息队列】ActiveMQ使用入门
推荐阅读
-
python使用wmi模块获取windows下的系统信息 监控系统
-
Windows系统下使用flup搭建Nginx和Python环境的方法
-
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
-
python使用wmi模块获取windows下的系统信息 监控系统
-
C盘空间不足怎么办?Windows系统自带清理工具cleanmgr的使用手册
-
Windows8系统Metro界面下的多多五笔输入法使用介绍
-
万能的系统安装方法 使用Windows通用安装器
-
Windows系统中使用C#读取文本文件内容的小示例
-
微软哭了:使用Windows 7系统的公司、用户还这么多
-
使用PHP访问RabbitMQ消息队列的方法示例