ActiveMQ技术学习总结文档Word文档格式.docx
《ActiveMQ技术学习总结文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《ActiveMQ技术学习总结文档Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
3.ActiveMQ的特性
⏹多种语言和协议编写客户端。
语言:
Java、C、C++、C#、Ruby、Perl、Python、PHP。
应用协议:
OpenWire、StompREST、WSNotification、XMPP、AMQP
⏹完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)
⏹对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
⏹通过了常见J2EE服务器(如Geronimo、JBoss4、GlassFish、WebLogic)的测试,其中通过JCA1.5resourceadaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE1.4商业服务器上
⏹支持多种传送协议:
in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA
⏹支持通过JDBC和journal提供高速的消息持久化
⏹从设计上保证了高性能的集群,客户端-服务器,点对点
⏹支持Ajax
⏹支持与Axis的整合
⏹可以很容易得调用内嵌JMSprovider,进行测试
二、ActiveMQ安装和下载
4.安装
⏹在http:
//activemq.apache.org/download.html下载5.4.0发行包,解压到需要安装ActiveMQ的文件夹,记为/path/to/activemq。
⏹unix环境activemq文件夹需要执行权限,执行如下命令
chmod-R755/path/to/activemq
5.启动
⏹window环境运行/path/to/activemq/bin/activemq.bat
⏹unix环境运行/path/to/activemq/bin/activemq
6.测试
ActiveMQ默认使用的TCP连接端口是61616,通过查看该端口的信息可以测试ActiveMQ是否成功启动
⏹window环境运行
netstat-an|find"
61616"
⏹unix环境运行netstat-an|grep61616
7.监控
ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。
admin:
http:
//127.0.0.1:
8161/admin/
demo:
8161/demo/
三、ActiveMQ基础实例
8.消息生产者
//通过用户密码URL创建接口工厂
ConnectionFactoryfactory=newActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"
tcp:
//localhost:
);
//通过连接工厂创建一个新的连接
Connectionconnection=factory.createConnection();
//通过连接接口创建一个回话
Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//根据回话接口创建有关的目标接口
Destinationdestination=session.createQueue("
MrYan"
//回话接口再根据目标接口创建一个消息生产者接口
MessageProducermessageProducer=session.createProducer(destination);
//调用回话创建一个文本消息
Messagemessage=session.createTextMessage("
Iamveryhappyeither...."
//使用消息生产者接口将消息传送至ActiveMQ服务器
messageProducer.send(message);
session.close();
connection.close();
9.消息消费者
//通过username,password,url创建连接工厂接口
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
//通过连接工厂创建一个新的连接接口
connection.start();
//通过连接接口创建一个会话接口
Sessionsession=connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
//会话接口创建有关主题的目标接口
MrLiu"
//会话接口再根据目标接口来创建一个消息消费者接口
MessageConsumerconsumer=session.createConsumer(destination);
//消息消费者接收消息
TextMessagemessage=(TextMessage)consumer.receive();
if(message!
=null){
System.out.println("
收到的消息:
"
+message.getText());
}
10.消息发送流程
然后调用发布接口发布消息,发布过程如下:
11.消息接收流程
四、JMS简介
12.JMS中的概念
✧JMS客户端:
接收或发送消息的java系统
✧JMS消息体:
系统间发送的消息体
✧JMS提供商:
JMS规范实现厂商
✧JMS管理对象:
预先配置好的用于JMS客户端的JMS对象。
如ConnectionFactory跟JMS服务端的连接工厂,Destination接收和发送消息的目标地址等
✧JMSDomain:
JMS定义了两种域模型,一种是PTP(point-to-point)即点对点消息传输模型,一种是pub/sub(publish-subscribe)即发布订阅模型。
PTP通过一个先进先出的queue实现。
很多人在这个PTP概念上有所误解,所谓点对点不是指生产者和消费者只有一个。
PTP如下图所示:
我们可以看到,一个或多个生产者发送消息,消息m2先抵达了queue,然后m1也发出了,并一同存在于一个先进先出的queue里面。
消费者也存在一个或多个,对queue里的消息进行消费。
但消息被随机的一个消费者消费且仅消费一次。
在pub/sub消息模型中,消息被广播给所有订阅者。
如下图:
13.JMS接口
JMS通用接口
JMSPTP接口
JMSpub/sub接口
描述
ConnectionFactory
QueueConnectionFactory
TopicConnectionFactory
创建与JMS服务的连接
Connection
QueueConnection
TopicConnection
JMS服务的连接,可创建Session
Destination
Queue
Topic
发送接收消息的目标,Queue和Topic均可视为一种Destination
Session
QueueSession
TopicSession
MessageProducer
QueueSender
TopicPublisher
消息发送者
MessageConsumer
QueueReceiver、QueueBrowser
TopicSubscriber
消息接收者/浏览者/订阅者
14.JMS接口关系图