`
JFires
  • 浏览: 41807 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

1.4运行ActiveMQ第一个例子

阅读更多

1.4运行ActiveMQ第一个例子

    前面部分已经教你启动ActiveMQ。作为确认,你应该打开一些终端来运行ActiveMQ示例。在第二个终端中,移动到example文件夹并查看它的内容。如清单1.4所示。

    Listing 1.4 List the contents of the ActiveMQ example directory

[apache-activemq-5.4.1]$ cd ./example/
bsnyder@mongoose [example]$ ls -1
build.xml
conf
perfharness
ruby
src
transactions

    example目录包含了一些不同的东西。下面是一个简单的说明。

  • build.xml----使用Java例子时需要的Ant配置文件。
  • conf----使用Java例子的配置文件。
  • perfharness----包含一个可以运行IBM JMS性能监控工具的脚本。
  • ruby----包含一些使用Ruby和STOMP连接ActiveMQ的例子。
  • src----Java例子就在这里。这个文件夹被build.xml使用。
  • tansactions----一个带事务的ActiveMQ实现例子,这个例子是从Sun JMS教程弄过来的。

如列表1.5所示,用第二个终端启动JMS消费者。

Listing 1.5 Start up the ActiveMQ consumer example

[example]$ ant consumer
Buildfile: build.xml
init:
compile:
consumer:
[echo] Running consumer against server at $url =
tcp://localhost:61616 for subject $subject = TEST.FOO
[java] Connecting to URL: tcp://localhost:61616
[java] Consuming queue: TEST.FOO
[java] Using a non-durable subscription
[java] Running 1 parallel threads
[java] [Thread-2] We are about to wait until we consume:
2000 message(s) then we will shutdown

这个命令编译java例子并启动一个简单的JMS消费者。就像你看到的,消费者:

  • 使用tcp协议连接代理器(tcp://localhost:61616)
  • 监听一个叫TEST.FOO的队列
  • 使用非持久订阅(nondurable subscription)
  • 接收2000条消息后关闭

总之,JMS消耗者连接到ActiveMQ并等待信息。现在你可以发送消息到TEST.FOO队列。

在第三个终端移动到example目录,如下启动一个JMS生产者。它将会立即开始发送消息。

Listing 1.6 Start up the ActiveMQ producer example

[example]$ ant producer
Buildfile: build.xml
init:
compile:
producer:
[echo] Running producer against server at $url =
tcp://localhost:61616 for subject $subject = TEST.FOO
[java] Connecting to URL: tcp://localhost:61616
[java] Publishing a Message with size 1000 to queue: TEST.FOO
[java] Using non-persistent messages
[java] Sleeping between publish 0 ms
[java] Running 1 parallel threads
[java] [Thread-2] Sending message: 'Message: 0 sent at: Thu Oct 14
21:24:07 MDT 2010 ...'
[java] [Thread-2] Sending message: 'Message: 1 sent at: Thu Oct 14
21:24:07 MDT 2010 ...'
[java] [Thread-2] Sending message: 'Message: 2 sent at: Thu Oct 14
21:24:07 MDT 2010 ...'

由于阅读方便,上面的输出省略了一些。但从上面你也可以了解到

  • 它使用tcp协议连接代理器(tcp://localhost:61616)
  • 向队列TEST.FOO发送消息
  • 使用非持久性消息
  • 在发送消息的间隙不休眠。

一旦JMS生产者连接上ActiveMQ,它将发送2000条消息后结束。这刚好是消费者关闭前所要消耗的消息数。当生产者在生产消息时,切换到终端2查看消费者怎么消耗这些信息。下面是终端2输出到消息

[java] [Thread-2] Received: 'Message: 0 sent at: Thu Oct 14 21:23:56
MDT 2010 ...' (length 1000)
[java] [Thread-2] Received: 'Message: 1 sent at: Thu Oct 14 21:23:56
MDT 2010 ...' (length 1000)
[java] [Thread-2] Received: 'Message: 2 sent at: Thu Oct 14 21:23:56
MDT 2010 ...' (length 1000)
...
[java] [Thread-2] Received: 'Message: 1999 sent at: Thu Oct 14 21:23:56
MDT 2010 ...' (length 1000)

当然,因为可读性原因消息没有全部显示出来。不过我们还是可以看到消费者消费了2000条消息并关闭。这时,生产者和消费者都应该关闭了,并且ActiveMQ是正常运行的。我们再看回终端2,好像ActiveMQ什么都没做。这是因为默认的日志配置并不输出一些不必要的东西。如果你想让ActiveMQ输出接收和发送消息的日志,你可以修改日志配置。具体内容将在14章介绍。

    这一节你学到了什么呢?通过使用ActiveMQ自带的例子,可以证明代理器已经启动,并且可以处理消息。这看起来没什么,但却是重要的第一步。如果你能成功运行这个例子,就说明你的网络连接没有问题,也说明ActiveMQ是正常的。如果你不能成功运行这个例子,你必须先找出错误。如果你需要帮助,通过ActiveMQ的邮件列表寻求帮助是最好的一种方法。这些例子只是让你开始使用ActiveMQ,但它们也能用来测试很多场景。这本书剩下的内容,有一些其它常用场景的例子,将用来演示ActiveMQ和它的特性。这些例子将在第3章详细解释。

 

本章总结

    ActiveMQ是多功能的,易于使用的消息中间件。你了解了ActiveMQ的特性,这些特性将在这本书中详细讲述。你也了解了ActiveMQ使用场景。本章介绍的场景都是真实世界的例子,并且已经在商业上使用的。JMS规范就是设计在这些场景中使用的。对于那些不熟悉或者根本不懂JMS的人,下一章将向你介绍企业消息服务,并提供一个JMS总览。如果你多这两个内容很熟悉,你可以跳过第三章。

3
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics