配色: 字号:
ActiveMQ实践入门指南
2017-03-31 | 阅:  转:  |  分享 
  
















ActiveMQ实践入门指南







TTSOA技术专题之“ActiveMQ实践入门指南”Page2of19



ActiveMQ实践入门指南





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

完全支持JMS1.1和J2EE1.4规范的JMSProvider实现,尽管JMS规范出台已经是很久的

事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。下面我们将分四部分来

介绍ActiveMQ的相关内容。



ActiveMQ实践:松耦合和ActiveMQ



回到2003年,一群开源开发者聚在一起组成了ApacheGeronimo。他们发现没有一个

很好的使用BSD风格许可证的消息中间件可用。因为Geronimo需要一个JMS实现J2EE兼

容性,所以一些开发者开始探讨这种可能性。



?ActiveMQ实践:松耦合和ActiveMQ



ActiveMQ实践:特性列表和安装



这一部分,我们将介绍ActiveMQ的特性列表和如何进行安装和如何对其进行测试。



?ActiveMQ实践:特性列表和安装



ActiveMQ实践:使用场景



在系统架构中,有很多场景ActiveMQ和异步消息都会产生深远的影响。这部分中,

我们将介绍一些使用ActiveMQ的场景实例。







TTSOA技术专题之“ActiveMQ实践入门指南”Page3of19

?ActiveMQ实践:使用场景



ActiveMQ实践:ActiveMQ使用入门



开始使用ActiveMQ并不是很难,你只需要启动代理,确保它能够接受连接和发送消

息。这部分中,我们将介绍如何开始使用ActiveMQ。



?ActiveMQ实践:ActiveMQ使用入门











































TTSOA技术专题之“ActiveMQ实践入门指南”Page4of19



ActiveMQ实践:松耦合和ActiveMQ





回到2003年,一群开源开发者聚在一起组成了ApacheGeronimo。在这种情况下,他

们发现没有一个很好的使用BSD风格许可证的消息中间件可用。因为Geronimo需要一个

JMS实现J2EE兼容性,所以一些开发者开始探讨这种可能性。他们拥有大量的商业MOM经

验,而且他们甚至之前已经创建了一些MOM,这些开发者打算创建下一代伟大的开源消息

中间件。

ActiveMQ其他的一些灵感来源于市场上的大多数MOM是商业化的这个事实,封闭源

码,而且购买和支持的成本高昂。商业MOM的确在业务上很流行,但是很多业务并不能负

担的起不合理的成本。这也进一步增加了创建一个开源替代物的积极性。使用Apache许

可证的开源MOM确实有着市场潜力。ApacheActiveMQ随着时间进步。ActiveMQ打算作为

JMS的标准,以供分布式应用之间的远程通信。为了更好地理解这个意思,最佳的做法就

是回顾一下分布式应用设计,尤其是通信。

松耦合和ActiveMQ

ActiveMQ为应用架构提供了松耦合的好处。松耦合通常被引入到一个架构迁移到一个

古典的紧耦合的远程过程调用(RPC)中。这样一个松耦合设计被认为是异步的,调用两

个应用中的任何一个应用对另一个都没有影响;不相互依赖或者有时间要求。应用可以信

任ActiveMQ有能力保障消息交付。因此,通常表述为应用发送消息是发送后自寻的。也

就是他们把消息发给ActiveMQ,并不关心消息如何交付和什么时候交付。同样的,消费应

用也不用关心消息来自哪里何以如何发送到ActiveMQ的。这对于在非均匀环境中来说尤

其有用,这种环境中允许客户端使用不同的语言编写,甚至可能是不同的网格协议。

ActiveMQ充当中间人,允许以异步的方式进行非均匀集成和交互。





TTSOA技术专题之“ActiveMQ实践入门指南”Page5of19

在考虑分布式应用设计的时候,应用耦合很重要。耦合引用两个或者多个应用或系统

的依赖性。简单的理解耦合就是考虑从系统中任何应用改变对其他应用产生的影响,这种

含义穿过架构中的其他应用作为性能被添加。改变一个应用会迫使所涉及的其他应用改变

呢?如果回答是肯定的,这些应用就是紧耦合。然而,如果一个应用可以在不影响其他应

用的情况下改变,这些应用就是松耦合的。对比松耦合,紧耦合应用很难维护。

像COM、CORBA、DCE和EJB这样的技术使用的技术称之为远程过程调用(RPC),RPC

被认为是紧耦合的。使用RPC,当一个应用调用另一个应用的时候,调用者是锁定的,直

到被调用者返还会控制权。图一描述了这个概念。



图一

通信

图一中的调用者是锁定的,直到被调用者返还会控制权。许多系统架构使用RPC,而

且很成功。然而,是有这种紧耦合设计也有很多缺点,最显著的就是很高的维护费用需

求,可谓一石激起千层浪。在另个应用见正确的时间是必要的。对于应用都必须在同时可

用的这种需求从应用一到应用二,响应从应用二到应用一。这样的时间需求很难处理。对

比这样设计中的紧耦合和松耦合,两个应用彼此完全不知道对方,如图二所示。





TTSOA技术专题之“ActiveMQ实践入门指南”Page6of19



图二

图二中的应用一给MOM发送了一个消息,可能过了一段时间,应用二从MOM收到一条

消息。另个应用都不知道对方的存在,在两个应用之间也没有时间需求。这种单一风格的

交互结果维护成本很低,因为一个应用改变对另一个没有影响。因此,松耦合应用在分布

式应用设计中更具优势。

试想在应用必须转移到另一个地点的这种改变。这种情况可能发生在新的硬件需求或

简单的机器转移的时候。紧耦合的系统设计,这样的环境很难转移,因为所有应用片段必

须经历断电。松耦合设计的应用,不同的系统片段可以独立的转移。假如应用一和应用二

都有多个实例,每个实例都属于不同的机器中。ActiveMQ安装在另外完全独立于这两个应

用的机器上。在这种场景中,这些实例都可以移动,而不影响彼此。实际上,ActiveMQ的

多个实例被认为是中间件配置网络。它允许ActiveMQ实例不影响其他实例的情况下自由

转移。这意味着这个架构中的任何片段可以在任何时间被维护,而无需影响这个系统。





TTSOA技术专题之“ActiveMQ实践入门指南”Page7of19

因此ActiveMQ为应用架构提供了一种不可思议的灵活性,松耦合的概念也成为现

实。但是ActiveMQ应该在何时使用呢?欢迎继续关注。







(作者:BruceSnyder,DejanBosanac,RobDavies译者:张培颖来源:TechTarget中国)



原文链接:http://www.searchsoa.com.cn/showcontent_41843.htm













TTSOA技术专题之“ActiveMQ实践入门指南”Page8of19



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的整合





TTSOA技术专题之“ActiveMQ实践入门指南”Page9of19

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

安装ActiveMQ

首先去http://activemq.apache.org/download.html

下载最新版本4.1.0release,解压apache-activemq-4.1-incubator.zip(或者

apache-activemq-4.1-incubator.tar.gz)目录如下:

+bin(windows下面的bat和unix/linux下面的sh)



+conf(activeMQ配置目录,包含最基本的activeMQ配置文件)

+data(默认是空的)



+docs(index,replease版本里面没有文档,不知道为啥不带)



+example(几个例子)

+lib(activemMQ使用到的lib)



-apache-activemq-4.1-incubator.jar(ActiveMQ的binary)

-LICENSE.txt



-NOTICE.txt



-README.txt



-user-guide.html





TTSOA技术专题之“ActiveMQ实践入门指南”Page10of19



你可以使用bin\activemq.bat(activemq)启动,如果一切顺利,你就会看见类似下面

的信息:



运行信息

几个小提示



1.这个仅仅是最基础的ActiveMQ的配置,很多地方都没有配置因此不要直接使用这

个配置用于生产系统



2.有的时候由于端口被占用,导致ActiveMQ错误,ActiveMQ可能需要以下端口

1099(JMX),61616(默认的TransportConnector)



3.如果没有物理网卡,或者MS的LoopBackAdpaterMulticast会报一个错误







TTSOA技术专题之“ActiveMQ实践入门指南”Page11of19

测试你的ActiveMQ

由于ActiveMQ是一个独立的jmsprovider,所以我们不需要其他任何第三方服务器

就可以马上做我们的测试了。编译example目录下面的程序ProducerTool/ConsumerTool

是JMS参考里面提到的典型应用,Producer产生消息,Consumer消费消息,而且这个例

子还可以加入参数帮助你测试刚才启动的本地ActiveMQ或者是远程的ActiveMQ。

ProducerToolbroker的地址,默认的是tcp://localhost:61616



[true|flase]是否使用topic,默认是false



[subject]subject的名字,默认是TOOL.DEFAULT



[durabl]是否持久化消息,默认是false



[messagecount]发送消息数量,默认是10



[messagesize]消息长度,默认是255



[clientID]durable为true的时候,需要配置clientID



[timeToLive]消息存活时间



[sleepTime]发送消息中间的休眠时间



[transacte]是否采用事务



ConsumerToolbroker的地址,默认的是tcp://localhost:61616





TTSOA技术专题之“ActiveMQ实践入门指南”Page12of19

[true|flase]是否使用topic,默认是false

[subject]subject的名字,默认是TOOL.DEFAULT

[durabl]是否持久化消息,默认是false



[maxiumMessages]接受最大消息数量,0表示不限制



[clientID]durable为true的时候,需要配置clientID



[transacte]是否采用事务



[sleepTime]接受消息中间的休眠时间,默认是0,onMeesage方法不休眠



[receiveTimeOut]接受超时



我们可以这样使用:

先启动activeMQ,再打开两个命令窗口,都进入D:\activemq\example,一个运行:

antconsumer,一个运行:antproducer,如果成功发送/接收了消息就OK了。









(来源:百度)



原文链接:http://www.searchsoa.com.cn/showcontent_41902.htm









TTSOA技术专题之“ActiveMQ实践入门指南”Page13of19



ActiveMQ实践:使用场景





在系统架构中,有很多场景ActiveMQ和异步消息都会产生深远的影响。下面是一些

场景实例:

非均匀应用集成。ActiveMQ中间件用Java语言编写,因此自然提供Java客户端

API。但是ActiveMQ也为C/C++、.NET、Perl、PHP、Python、Ruby喝一些其他语言提供

客户端。在你考虑如何集成不同平台不同语言编写的应用的时候,ActiveMQ拥有巨大优

势。在这样的例子中,多种客户端API通过ActiveMQ发送和接受消息成为可能,无论使

用的是什么语言。此外,ActiveMQ还提供交叉语言功能,该功能整合这种功能,无需使用

远程过程调用(RPC)确实是个优势,因为消息协助应用解耦。

作为RPC的替代。应用使用RPC风格同步调用十分普遍。假设大多数客户端服务器应

用使用RPC,包括ATM、大多数WEB应用、信用卡系统、销售点系统等等。尽管很多系统

很成功,转换使用异步消息可以带来很多好处,而且也不会放弃响应保证。系统以来同步

需求典型地限制了扩展,因为最终需求将开始起作用,从而放慢整个系统。取而代之这种

不好的体验,使用异步消息,附加的消息接收器可以轻松添加,假设你的应用可以解耦。

两个应用之间解耦。正如之前讨论的,紧耦合架构可以导致很多问题,尤其是如果他

们是分布的。松耦合架构,在另一方面,真实了更少的依赖性,能够更好地处理不可预见

的改变。你不见可以在系统中改变组件而不影响整个系统,而且组件交互也相当的简单。

取代使用同步方案的组件交互,组件利用异步通信。这样的松耦合遍及系统被称之为事件

驱动架构(EDA)。

作为事件驱动架构的主干。在之前的观点中,解耦、异步风格架构允许软件本身进一

步扩展(水平的可扩展性),而不是依赖硬件的可扩展性(垂直的可扩展性)。想象一下

一种难以置信的流量、电子商务网站像亚马逊。但一个用户在亚马逊上购买,许多分开的





TTSOA技术专题之“ActiveMQ实践入门指南”Page14of19

阶段贯穿,订单需要履行包括订单配置、创建发票、支付流程、订单完成、运输等。然

而,但一个用户实际上失职了一个订单,用户立即得到一个页面说明,“感谢您的订

单。”不仅如此,没有任何延误。用户也收到了订单已经收到的邮件说明。订单配置流程

由亚马逊雇佣就是个很好的例子,第一步在一种更大的、异步流程中。每一个订单步骤直

接由分开的服务奋力地处理。但用户下了订单,异步调用提交订单,但是全部订单流程不

会落后于通过网页浏览器进行的同步调用。反之,订单被接受并立即被确认。这个流程中

剩余的步骤一步地被处理。如果发生了问题,组织流程进行,用户会被通知。这样的异步

流程提供大量的可扩展性。

改善应用可扩展性。许多应用利用事件驱动架构,为了提供大量的可扩展性,包括像

电子商务、政府、制造业和在线游戏等领域。使用异步消息在业务领域分离一个应用,许

多其他可能性开始合并。考虑使用服务为特定任务设计应用的能力。这正是面向服务架构

(SOA)的主干。每一个服务实现一个独立的功能,而且只是那个功能。应用通过这些服

务构成来创建,在服务间使用异步消息实现通信。这种风格的应用设计被称之为复杂事件

处理(CEP)。使用CEP,系统中组件之间的交互可以被进一步的分析跟踪。在考虑异步消

息在系统的组件之间添加一种迂回的时候,这些可能性是无止境的。







(作者:BruceSnyder,DejanBosanac,RobDavies译者:张培颖来源:TechTarget中国)



原文链接:http://www.searchsoa.com.cn/showcontent_41897.htm















TTSOA技术专题之“ActiveMQ实践入门指南”Page15of19



ActiveMQ实践:ActiveMQ使用入门





开始使用ActiveMQ并不是很难,你只需要启动代理,确保它能够接受连接和发送消

息。ActiveMQ附带了一些例子,有助于你完成这个任务,但是,首先你需要安装Java,

并下载ActiveMQ。

第一次要下载并安装JavaSE和ActiveMQ,检查ActiveMQ目录,启动ActiveMQ。

1.下载并安装JavaSE

ActiveMQ至少需要SunJavaSE1.5。在本章中,必须优先安装。如果你没有安装

SunJ2SE1.5,你需要使用Linux,Solaris或者Windows从下面的地址下载并安装它:

http://java.sun.com/javase/downloads/index_jdk5.jsp

请确保,你没有下载Netbeans的JDK5.0或者Java运行时环境!你需要下载JDK

5.0Update22。如果你使用MacOSX系统,你应该已经安装了Java。但是以防万一,你

可以从下面网址获得它:http://developer.apple.com/java/download/

一旦你安装了JavaSE,你需要测试它是否设置正确。

这样做,打开一个终端或者命令行,输入如下命令:

以下是引用片段:

[~]$java-version

javaversion"1.5.0_13"

Java(TM)2RuntimeEnvironment,StandardEdition(build1.5.0_13-b05-237)

JavaHotSpot(TM)ClientVM(build1.5.0_13-119,mixedmode,sharing)





TTSOA技术专题之“ActiveMQ实践入门指南”Page16of19

你的输出可能会略有不同,这取决于你使用的操作系统,但是最重要的部分是Java

SE的输出。上面的命令行告诉我们两件事情;J2SE已经正确安装,你使用的版本是1.5。

如果你不能看到类似的输出,那么,你需要在进入下一章节之前,纠正这个环境。

2.下载ActiveMQ

ActiveMQ可以在下面地址的ApacheActiveMQ网站上获得:

http://activemq.apache.org/download.html

点击超链接5.4.1release,你会找到tarball和zip两种可用的压缩格式(tarball在

Linux和Unix上可用,而zip在Windows可用)。一旦你下载了这个包,并解压它,你就

要继续进行下去。一旦到了这一步,你应该设置好了JavaSE,并正常工作,那么你就要

准备看一下ActiveMQ的目录了。

在命令行中,进行apache-activemq-5.3.0目录,并列出它。

3.检查ActiveMQ的目录

目录:

以下是引用片段:

[apache-activemq-5.3.0]$ls-1

LICENSE

NOTICE

README.txt

WebConsole-README.txt

activemq-all-5.3.0.jar

bin

conf

data





TTSOA技术专题之“ActiveMQ实践入门指南”Page17of19

docs

example

lib

user-guide.html

webapps

该目录的内容相当简单:

?LICENSE–由于法律目的,ASF需要的文件,包括ActiveMQ用到的所有

的库的许可证

?NOTICE–另一个由于法律目的,ASF需要的文件,它包括ActiveMQ用到

的所有的库的版权信息

?README.txt–该文件包含了一些程序说明书的地址,让新用户开始使用

ActiveMQ

?WebConsole-README.txt-包含使用ActiveMQweb控制台的信息

?activemq-all-5.3.0.jar-一个jar文件,为了方便起见放置在这里,如

果你需要,可以获得并使用它

?bin–bin目录包含ActiveMQ的二进制/可执行文件;启动角本在这个目

录中

?conf–conf目录包含ActiveMQ所有的配置信息

?data–data目录用来存放日志文件和持久性消息数据

?docs–包含一个简单的index.html文件,用来引用ActiveMQ网站

?example–ActiveMQ的例子;用来迅速检验ActiveMQ。

?lib–lib目录包含ActiveMQ需要的所有库文件。

?user-guide.html–一个非常短的指南,用来讲述ActiveMQ和运行例子

?webapps–webapps目录包含ActiveMQweb控制台和一些其他web相关

的演示

下一个任务是启动ActiveMQ,并用例子来验证它。





TTSOA技术专题之“ActiveMQ实践入门指南”Page18of19

4.启动ActiveMQ

下载并解压ActiveMQ包之后,就可以使用它了。二进制分发提供了基本的配置,让

你更容易的开始,这就是我们将要使用的例子。所以,现在启动ActiveMQ,在

Linux/Unix环境下运行下面的命令:

以下是引用片段:

[apache-activemq-5.3.0]$./bin/activemq

JavaRuntime:AppleInc.1.5.0_16

/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home

Heapsizes:current=1984kfree=1449kmax=520256k

JVMargs:-Xmx512M-Dorg.apache.activemq.UseDedicatedTaskRunner=true

-Djava.util.logging.config.file=logging.properties-

Dcom.sun.management.jmxremote

-Dactivemq.classpath=/tmp/apache-activemq-5.3.0/conf;

-Dactivemq.home=/tmp/apache-activemq-5.3.0

-Dactivemq.base=/tmp/apache-activemq-5.3.0

ACTIVEMQ_HOME:/tmp/apache-activemq-5.3.0

ACTIVEMQ_BASE:/tmp/apache-activemq-5.3.0

Loadingmessagebrokerfrom:xbean:activemq.xml

INFO|UsingPersistenceAdapter:

org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter@5bc68c

INFO|ActiveMQ5.3.0JMSMessageBroker(localhost)isstarting

INFO|Forhelpormoreinformationpleasesee:http://activemq.apache.org/

INFO|Listeningforconnectionsat:tcp://mongoose.local:61616

INFO|ConnectoropenwireStarted

INFO|ActiveMQJMSMessageBroker(localhost,

ID:mongoose.local-56371-1255406832102-0:0)started





TTSOA技术专题之“ActiveMQ实践入门指南”Page19of19

INFO|Loggingtoorg.slf4j.impl.JCLLoggerAdapter(org.mortbay.log)

viaorg.mortbay.log.Slf4jLog

INFO|jetty-6.1.9

INFO|ActiveMQWebConsoleinitialized.

INFO|InitializingSpringFrameworkServlet''dispatcher''

INFO|ActiveMQConsoleathttp://0.0.0.0:8161/admin

INFO|InitializingSpringrootWebApplicationContext

INFO|Connectorvm://localhostStarted

INFO|CamelConsoleathttp://0.0.0.0:8161/camel

INFO|ActiveMQWebDemosathttp://0.0.0.0:8161/demo

INFO|RESTfulfileaccessapplicationathttp://0.0.0.0:8161/fileserver

INFO|StartedSelectChannelConnector@0.0.0.0:8161

此命令可以启动ActiveMQ代理,一些连接器可以通过一些协议暴露给客户,如TCP,

SSL,STOMP和XMPP。

要知道ActiveMQ的启动,提供给客户的四种可用协议和用到的每一个端口号。这些

配置将在第三章讨论。现在,上面的输出告诉你,ActiveMQ已经建立和运行,并可以使

用。现在,开始准备处理一些消息。

最好的方法是用ActiveMQ的例子发送并接收消息。下一章将为你循序渐进的讲述。





(作者:BruceSnyder,DejanBosanac,RobDavies译者:刘志超来源:

TechTarget中国)



原文链接:http://www.searchsoa.com.cn/showcontent_42007.htm





献花(0)
+1
(本文系关平藏书首藏)