ActiveMQ的入门使用
来源:互联网 发布:淘宝简易摄影棚 编辑:程序博客网 时间:2024/06/10 22:07
ActiveMQ的入门使用
序:
消息队列现在又很多,各有优势,这里现在就说说ActiveMQ。
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
几个基本参数解释
ProducerTool broker的地址,默认的是tcp://localhost:61616
[true|flase] 是否使用topic,默认是false
[subject] subject的名字,默认是TOOL.DEFAULT
[durabl] 是否持久化消息,默认是false
[messagecount] 发送消息数量,默认是10
[messagesize] 消息长度,默认是255
[clientID] durable为true的时候,需要配置clientID
[timeToLive] 消息存活时间
[sleepTime] 发送消息中间的休眠时间
[transacte] 是否采用事务
ConsumerTool broker的地址,默认的是tcp://localhost:61616
[true|flase] 是否使用topic,默认是false
[subject] subject的名字,默认是TOOL.DEFAULT
[durabl] 是否持久化消息,默认是false
[maxiumMessages] 接受最大消息数量,0表示不限制
[clientID] durable为true的时候,需要配置clientID
[transacte] 是否采用事务
[sleepTime] 接受消息中间的休眠时间,默认是0,onMeesage方法不休眠
[receiveTimeOut] 接受超时
1、先下载ActiveMQ,我这里下载的是5.14.3
地址:http://activemq.apache.org/activemq-5143-release.html
2、运行ActiveMQ
解压下载的ActiveMQ,找到bin目录下的activemq.bat,双击。
我这里直接运行bin下的activemq.bat出现黑框框一闪而过,于是我运行的是win64目录下的activemq.bat,黑框框正常不消失了
3、访问:http://localhost:8161/admin
选择queues,输入队列名后点击Create。
4、新建一个java项目,测试下。
新建java project,我这里就取名ActiveMQ
5、新建lib目录,与src同级。将下载的ActiveMQ的解压文件lib下的
activemq-broker-5.14.3.jar
activemq-client-5.14.3.jar
geronimo-j2ee-management_1.1_spec-1.0.1.jar
geronimo-jms_1.1_spec-1.1.1.jar
slf4j-api-1.7.13.jar
拷贝到项目下的lib下。
如果不加入slf4j-log4j12-1.7.13.jar、log4j-1.2.17.jar会报下面的错
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"
另外还要加入hawtbuf-1.11.jar,否则会报下面的错
org.fusesource.hawtbuf.UTF8Buffer
6、在项目里建2个java类,一个发送、一个接收,我这里建Sender.java、Receiver.java,代码如下:
Sender.java
package com.lm.activemq;
/**
* @Header: Sender.java
* 类描述:
* @author: lm
* @date 2013-7-17 上午10:52:42
* @Email
* @company 欢
* @addr 北京市朝阳区劲松
*/
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Sender {
private static final int SEND_NUMBER = 5;
public static void main(String[] args) {
// ConnectionFactory :连接工厂,JMS 用它创建连接
ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS
// Provider 的连接
Connection connection = null; // Session: 一个发送或接收消息的线程
Session session; // Destination :消息的目的地;消息发送给谁.
Destination destination; // MessageProducer:消息发送者
MessageProducer producer; // TextMessage message;
// 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
try { // 构造从工厂得到连接对象
connection = connectionFactory.createConnection();
// 启动
connection.start();
// 获取操作连接
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
destination = session.createQueue("FirstQueue");
// 得到消息生成者【发送者】
producer = session.createProducer(destination);
// 设置不持久化,此处学习,实际根据项目决定
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 构造消息,此处写死,项目就是参数,或者方法获取
sendMessage(session, producer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
public static void sendMessage(Session session, MessageProducer producer)
throws Exception {
for (int i = 1; i <= SEND_NUMBER; i++) {
TextMessage message = session.createTextMessage("ActiveMq 发送的消息"
+ i);
// 发送消息到目的地方
System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);
producer.send(message);
}
}
}
Receiver.java
package com.lm.activemq;
/**
* @Header: Receiver.java
* 类描述:
* @author: lm
* @date 2013-7-17 上午10:52:58
* @Email
* @company 欢
* @addr 北京市朝阳区劲松
*/
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Receiver {
public static void main(String[] args) {
// ConnectionFactory :连接工厂,JMS 用它创建连接
ConnectionFactory connectionFactory;
// Connection :JMS 客户端到JMS Provider 的连接
Connection connection = null;
// Session: 一个发送或接收消息的线程
Session session;
// Destination :消息的目的地;消息发送给谁.
Destination destination;
// 消费者,消息接收者
MessageConsumer consumer;
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
try {
// 构造从工厂得到连接对象
connection = connectionFactory.createConnection();
// 启动
connection.start();
// 获取操作连接
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
while (true) {
// 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
TextMessage message = (TextMessage) consumer.receive(100000);
if (null != message) {
System.out.println("收到消息" + message.getText());
} else {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
}
7、测试过程,注意先运行Sender,run as application就行,然后再运行Receiver
注意,先运行Sender后查看ActiveMQ的管理页面,你会看到收到和接收的数量差距,如图:
当再运行Receiver 后,两个数量才会持平。如图
8、下面顺便贴下2个java运行后的控制台效果
9、关键代码和对象都有解释,这里不多说了,下次写项目引入,谢谢
- ActiveMQ的入门使用
- 【ActiveMQ】ActiveMQ的使用
- ActiveMQ-001使用入门
- ActiveMQ的入门
- ActiveMQ的入门案例以及整合Spring的简单使用
- ActiveMQ(二):ActiveMQ的简单入门
- ActiveMQ的入门实例demo
- ActiveMQ 的的使用
- 使用ActiveMQ的BLOBMessage
- ActiveMQ的使用(一)
- ActiveMQ的使用1
- activemq的安装使用
- ActiveMQ的使用
- ActiveMQ 的使用
- ActiveMQ的基本使用
- ActiveMQ的简单使用
- ActiveMq的简单使用
- activeMQ的使用
- 并查集 (不相交集数据结构)
- Qt 学习之路 2(14):对话框数据传递
- Curator实现zookeeper路径变化监听(节点变化监听)
- 如何高效学习JavaScript? JavaScript学习方法!
- Qt 学习之路 2(15):标准对话框 QMessageBox
- ActiveMQ的入门使用
- 了解mysql数据库
- Qt 学习之路 2(16):深入 Qt5 信号槽新语法
- 使用CMake制作lib文件以及Dlib机器学习库的安装和使用-亲测可行
- Qt 学习之路 2(17):文件对话框
- git提示error setting certificate verify locations解决办法
- pygame 文字保存成png格式透明背景
- Ubuntu
- (四)面向对象编程