第三章:ActiveMQ例子
本章内容
- 介绍本书每一个示例
- 使用Maven来编译和运行这些例子
- 怎样使用这些例子与ActiveMQ进行交互
ActiveMQ提供JMS规范要求的所有特性并且在这之上,提供了很多有用的特性。这些都在图3.1里描绘出来,并在本书剩下章节讨论。为了说明这些特性,我们提供了两个例子,这两个例子都是从真实商用领域得来的。相比前面的例子,这些例子更完整和简洁地展示ActiveMQ的特性。
其中一个例子是基于股票投资的,另一个例子是基于工作队列。这两个例子比ActiveMQ自带的例子更广泛地展现ActiveMQ。我们先介绍这些例子的使用场景,接着详细讨论如何使用它们。在你阅读这本书的任何时候,如果你需要回顾这些例子,你都可以回来阅读这一章。
股票投资例子演示了发布/订阅到消息传送领域。发布者向许多对该消息感兴趣的订阅者广播消息。消息发布到一个叫做主题的JMS目标,在线的订阅者客户端则接收消息。通过这种方式,代理器向每一个订阅者发送消息而不用订阅者去拉消息。每一个在线的订阅者接收到一条消息的副本。除非使用持久订阅,否则订阅者必须在线等待接收消息。在一个主题中,将使用发布/订阅模式将消息的副本发送给每一个订阅者。
工作队列例子演示里点对点消息传送领域。消息生产者发送消息到一个JMS队列,接收者则从这个队列接收消息。在点对点领域,消息的发送者和接收者没有时序性要求。队列会保存消息直到消费者准备好接收它们。如果消费者准备好,消息将发送给所有消费者,但是不会有两个或以上消费者接收到同一条消息。在点对点领域,队列里的消息通过循环方式发送到消费者。
不只是不同例子关注的消息传送领域不同,它们对应的使用场景也不同。另外,虽然接下来的例子看起来差不多,但是它们有一个很重要的不同就是应用于不同的消息传送领域。股票投资使用发布/订阅消息传送,而工作队列使用点对点的消息传送。这些例子的代码可以从Manning网站下载,URL:http://manning.com/snyder/activemq-in-action-examples-src.zip。
在这一章,首先我们会下载Maven并安装它,然后用它来编译和运行示例。之后,我们将回顾每一个例子并解释每一个例子的行为。在完成这些练习后,你将对这些例子有足够的了解可以在本书的其它部分认出它们,并且看看它们是如何被用来演示ActiveMQ特性。
3.1 下载Maven并编译例子
下面是下载和安装Maven的步骤:
- 从Apache Sofeware Foundation下载Maven,URL:http://maven.apache.org/。Maven提供tar和zip包,依据你操作系统选择不同的包。
- 在你的计算机上将压缩包解压到一个永久路径。
- 创建一个环境变量M2_HOME,并让它指向Maven目录
- 在Unix上,将$M2_HOME/bin目录添加到环境变量(在Windows上,将$M2_HOME/bin目录添加到%PATH%变量里)
- 通过运行如下命令确认Maven正确安装。
$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 13:16:01-0600)
Java version: 1.5.0_19
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x" version: "10.6.2" arch: "i386" Family: "unix"
如果Maven正确安装,你将看到与上面相似的输出。如果没看到相似输出,你必须先使它正确再进入下一步。你
可以在下面的地址获取更多关于安装Maven的说明.http://maven.apache.org/download.html#Installation
你必须有因特网连接
要使用这些例子,你必须有因特网连接。因为Maven必须为这些例子下载必须的依赖包。
如果你已经成功安装Maven,现在必须解压和编译这些例子了。在把包含源代码的例子解压后,你就可以编译了。现在移动到amq-in-action-example-src目录,然后运行下面的命令。为了将命令与输出区分开,下面的命令将用粗体字显示。
[amq-in-action-example-src] $ mvn clean install
[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------
-----
[INFO] Building ActiveMQ in Action Examples
[INFO] task-segment: [clean, install]
[INFO] -------------------------------------------------------------------
-----
Downloading: http://localhost:8081/nexus/content/groups/public/org/apache/
maven/plugins/maven-clean-plugin/2.2/maven-clean-plugin-2.2.pom
3K downloaded (maven-clean-plugin-2.2.pom)
...
[INFO] [install:install {execution: default-install}]
[INFO] Installing /private/tmp/amq-in-action-example-src/target/
activemq-in-action-examples.jar to /Users/bsnyder/.m2/repository/org/
apache/activemq/book/activemq-in-action-examples/1.0-SNAPSHOT/
activemq-in-action-examples-1.0-SNAPSHOT.jar
[INFO] Installing /private/tmp/amq-in-action-example-src/target/
activemq-in-action-examples-src.zip to /Users/bsnyder/.m2/repository/org/
apache/activemq/book/activemq-in-action-examples/1.0-SNAPSHOT/
activemq-in-action-examples-1.0-SNAPSHOT-src.zip
[INFO] -------------------------------------------------------------------
-----
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------
-----
[INFO] Total time: 57 seconds
[INFO] Finished at: Fri Dec 04 22:35:57 MST 2009
[INFO] Final Memory: 24M/44M
[INFO] -------------------------------------------------------------------
-----
由于输出信息太多,上面省略了一些。上面的信息说明了编译成功。当你看到BUILD SUCCESSFUL信息的时候,你就可以进入下面的学习了。如果你看到BUILD FAILURE,你必须找出出错原因并且解决后才能进入下一步。