ActiveMQ.docx

上传人:b****8 文档编号:27870490 上传时间:2023-07-05 格式:DOCX 页数:19 大小:336.10KB
下载 相关 举报
ActiveMQ.docx_第1页
第1页 / 共19页
ActiveMQ.docx_第2页
第2页 / 共19页
ActiveMQ.docx_第3页
第3页 / 共19页
ActiveMQ.docx_第4页
第4页 / 共19页
ActiveMQ.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

ActiveMQ.docx

《ActiveMQ.docx》由会员分享,可在线阅读,更多相关《ActiveMQ.docx(19页珍藏版)》请在冰豆网上搜索。

ActiveMQ.docx

ActiveMQ

1.ActiveMQ

1.1.什么是ActiveMQ

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。

ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMSProvider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

主要特点:

1.多种语言和协议编写客户端。

语言:

Java,C,C++,C#,Ruby,Perl,Python,PHP。

应用协议:

OpenWire,StompREST,WSNotification,XMPP,AMQP

2.完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)

3.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性

4.通过了常见J2EE服务器(如Geronimo,JBoss4,GlassFish,WebLogic)的测试,其中通过JCA1.5resourceadaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE1.4商业服务器上

5.支持多种传送协议:

in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

6.支持通过JDBC和journal提供高速的消息持久化

7.从设计上保证了高性能的集群,客户端-服务器,点对点

8.支持Ajax

9.支持与Axis的整合

10.可以很容易得调用内嵌JMSprovider,进行测试

1.2.ActiveMQ的消息形式

对于消息的传递有两种类型:

一种是点对点的,即一个生产者和一个消费者一一对应;

另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。

JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。

  ·StreamMessage--Java原始值的数据流

  ·MapMessage--一套名称-值对

  ·TextMessage--一个字符串对象

  ·ObjectMessage--一个序列化的Java对象

  ·BytesMessage--一个字节的数据流

2.ActiveMQ的安装

进入http:

//activemq.apache.org/下载ActiveMQ

使用的版本是5.12.0

2.1.安装环境:

1、需要jdk

2、安装Linux系统。

生产环境都是Linux系统。

2.2.安装步骤

第一步:

把ActiveMQ的压缩包上传到Linux系统。

第二步:

解压缩。

第三步:

启动。

使用bin目录下的activemq命令启动:

[root@localhostbin]#./activemqstart

关闭:

[root@localhostbin]#./activemqstop

查看状态:

[root@localhostbin]#./activemqstatus

注意:

如果ActiveMQ整合spring使用不要使用activemq-all-5.12.0.jar包。

建议使用5.11.2

进入管理后台:

http:

//192.168.25.168:

8161/admin

用户名:

admin

密码:

admin

3.ActiveMQ的使用方法

3.1.Queue

3.1.1.Producer

生产者:

生产消息,发送端。

把jar包添加到工程中。

使用5.11.2版本的jar包。

第一步:

创建ConnectionFactory对象,需要指定服务端ip及端口号。

第二步:

使用ConnectionFactory对象创建一个Connection对象。

第三步:

开启连接,调用Connection对象的start方法。

第四步:

使用Connection对象创建一个Session对象。

第五步:

使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。

第六步:

使用Session对象创建一个Producer对象。

第七步:

创建一个Message对象,创建一个TextMessage对象。

第八步:

使用Producer对象发送消息。

第九步:

关闭资源。

@Test

publicvoidtestQueueProducer()throwsException{

//第一步:

创建ConnectionFactory对象,需要指定服务端ip及端口号。

//brokerURL服务器的ip及端口号

ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp:

//192.168.25.168:

61616");

//第二步:

使用ConnectionFactory对象创建一个Connection对象。

Connectionconnection=connectionFactory.createConnection();

//第三步:

开启连接,调用Connection对象的start方法。

connection.start();

//第四步:

使用Connection对象创建一个Session对象。

//第一个参数:

是否开启事务。

true:

开启事务,第二个参数忽略。

//第二个参数:

当第一个参数为false时,才有意义。

消息的应答模式。

1、自动应答2、手动应答。

一般是自动应答。

Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//第五步:

使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。

//参数:

队列的名称。

Queuequeue=session.createQueue("test-queue");

//第六步:

使用Session对象创建一个Producer对象。

MessageProducerproducer=session.createProducer(queue);

//第七步:

创建一个Message对象,创建一个TextMessage对象。

/*TextMessagemessage=newActiveMQTextMessage();

message.setText("helloactiveMq,thisismyfirsttest.");*/

TextMessagetextMessage=session.createTextMessage("helloactiveMq,thisismyfirsttest.");

//第八步:

使用Producer对象发送消息。

producer.send(textMessage);

//第九步:

关闭资源。

producer.close();

session.close();

connection.close();

}

3.1.2.Consumer

消费者:

接收消息。

第一步:

创建一个ConnectionFactory对象。

第二步:

从ConnectionFactory对象中获得一个Connection对象。

第三步:

开启连接。

调用Connection对象的start方法。

第四步:

使用Connection对象创建一个Session对象。

第五步:

使用Session对象创建一个Destination对象。

和发送端保持一致queue,并且队列的名称一致。

第六步:

使用Session对象创建一个Consumer对象。

第七步:

接收消息。

第八步:

打印消息。

第九步:

关闭资源

@Test

publicvoidtestQueueConsumer()throwsException{

//第一步:

创建一个ConnectionFactory对象。

ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp:

//192.168.25.168:

61616");

//第二步:

从ConnectionFactory对象中获得一个Connection对象。

Connectionconnection=connectionFactory.createConnection();

//第三步:

开启连接。

调用Connection对象的start方法。

connection.start();

//第四步:

使用Connection对象创建一个Session对象。

Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//第五步:

使用Session对象创建一个Destination对象。

和发送端保持一致queue,并且队列的名称一致。

Queuequeue=session.createQueue("test-queue");

//第六步:

使用Session对象创建一个Consumer对象。

MessageConsumerconsumer=session.createConsumer(queue);

//第七步:

接收消息。

consumer.setMessageListener(newMessageListener(){

@Override

publicvoidonMessage(Messagemessage){

try{

TextMessagetextMessage=(TextMessage)message;

Stringtext=null;

//取消息的内容

text=textMessage.getText();

//第八步:

打印消息。

System.out.println(text);

}catch(JMSExceptione){

e.printStackTrace();

}

}

});

//等待键盘输入

System.in.read();

//第九步:

关闭资源

consumer.close();

session.close();

connection.close();

}

3.2.Topic

3.2.1.Producer

使用步骤:

第一步:

创建ConnectionFactory对象,需要指定服务端ip及端口号。

第二步:

使用ConnectionFactory对象创建一个Connection对象。

第三步:

开启连接,调用Connection对象的start方法。

第四步:

使用Connection对象创建一个Session对象。

第五步:

使用Session对象创建一个Destination对象(topic、queue),此处创建一个Topic对象。

第六步:

使用Session对象创建一个Producer对象。

第七步:

创建一个Message对象,创建一个TextMessage对象。

第八步:

使用Producer对象发送消息。

第九步:

关闭资源。

@Test

publicvoidtestTopicProducer()throwsException{

//第一步:

创建ConnectionFactory对象,需要指定服务端ip及端口号。

//brokerURL服务器的ip及端口号

ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp:

//192.168.25.168:

61616");

//第二步:

使用ConnectionFactory对象创建一个Connection对象。

Connectionconnection=connectionFactory.createConnection();

//第三步:

开启连接,调用Connection对象的start方法。

connection.start();

//第四步:

使用Connection对象创建一个Session对象。

//第一个参数:

是否开启事务。

true:

开启事务,第二个参数忽略。

//第二个参数:

当第一个参数为false时,才有意义。

消息的应答模式。

1、自动应答2、手动应答。

一般是自动应答。

Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//第五步:

使用Session对象创建一个Destination对象(topic、queue),此处创建一个topic对象。

//参数:

话题的名称。

Topictopic=session.createTopic("test-topic");

//第六步:

使用Session对象创建一个Producer对象。

MessageProducerproducer=session.createProducer(topic);

//第七步:

创建一个Message对象,创建一个TextMessage对象。

/*

*TextMessagemessage=newActiveMQTextMessage();message.setText(

*"helloactiveMq,thisismyfirsttest.");

*/

TextMessagetextMessage=session.createTextMessage("helloactiveMq,thisismytopictest");

//第八步:

使用Producer对象发送消息。

producer.send(textMessage);

//第九步:

关闭资源。

producer.close();

session.close();

connection.close();

}

3.2.2.Consumer

消费者:

接收消息。

第一步:

创建一个ConnectionFactory对象。

第二步:

从ConnectionFactory对象中获得一个Connection对象。

第三步:

开启连接。

调用Connection对象的start方法。

第四步:

使用Connection对象创建一个Session对象。

第五步:

使用Session对象创建一个Destination对象。

和发送端保持一致topic,并且话题的名称一致。

第六步:

使用Session对象创建一个Consumer对象。

第七步:

接收消息。

第八步:

打印消息。

第九步:

关闭资源

@Test

publicvoidtestTopicConsumer()throwsException{

//第一步:

创建一个ConnectionFactory对象。

ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp:

//192.168.25.168:

61616");

//第二步:

从ConnectionFactory对象中获得一个Connection对象。

Connectionconnection=connectionFactory.createConnection();

//第三步:

开启连接。

调用Connection对象的start方法。

connection.start();

//第四步:

使用Connection对象创建一个Session对象。

Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//第五步:

使用Session对象创建一个Destination对象。

和发送端保持一致topic,并且话题的名称一致。

Topictopic=session.createTopic("test-topic");

//第六步:

使用Session对象创建一个Consumer对象。

MessageConsumerconsumer=session.createConsumer(topic);

//第七步:

接收消息。

consumer.setMessageListener(newMessageListener(){

@Override

publicvoidonMessage(Messagemessage){

try{

TextMessagetextMessage=(TextMessage)message;

Stringtext=null;

//取消息的内容

text=textMessage.getText();

//第八步:

打印消息。

System.out.println(text);

}catch(JMSExceptione){

e.printStackTrace();

}

}

});

System.out.println("topic的消费端03。

");

//等待键盘输入

System.in.read();

//第九步:

关闭资源

consumer.close();

session.close();

connection.close();

}

4.Activemq整合spring

4.1.使用方法

第一步:

引用相关的jar包。

org.springframework

spring-jms

org.springframework

spring-context-support

第二步:

配置Activemq整合spring。

配置ConnectionFactory

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"

xmlns:

context="http:

//www.springframework.org/schema/context"xmlns:

p="http:

//www.springframework.org/schema/p"

xmlns:

aop="http:

//www.springframework.org/schema/aop"xmlns:

tx="http:

//www.springframework.org/schema/tx"

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-4.2.xsd

http:

//www.springframework.org/schema/contexthttp:

//www.springframework.org/schema/context/spring-context-4.2.xsd

http:

//www.springframework.org/schema/aophttp:

//www.springframework.org/schema/aop/spring-aop-4.2.xsd

http:

//www.springframework.org/schema/txhttp:

//www.springframework.org/schema/tx/spring-tx-4.2.xsd

http:

//www.springframework.org/schema/utilhttp:

//www.springframework.org/schema/util/spring-util-4.2.xsd">

 

--真正可以产生Connection的ConnectionFactory,由对应的JMS服务厂商提供-->

//192.168.25.168:

61616"/>

--Spring用于管理真正的ConnectionFactory的ConnectionFactory-->

class="org.springframework.jms.connection.SingleConnectionFactory">

--目标ConnectionFactory对应真实的可以产生JMSConnection的ConnectionFactory-->

第三步:

配置生产者。

使用JMSTemplate对象。

发送消息。

第四步:

在spring容器中配置Destination。

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"

xmlns:

context="http:

//www.springframework.org/schema/context"xmlns:

p="http:

//www.springframework

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1