第二个关于job queue的例子旨在说明点对点消息系统。这个例子使用Producer类发送job消息到消息队列,同时使用Consumer类来注册Listener类以便以异步方式处理消息队列中的消息。 这三个类提供的功能展示了JMS点对点消息是如何发送和接收的。这个例子中的三个类和stock portfolio 例子中相应的类非常相似,两个例子的不同点在于各自使用了不同的消息系统。本例中Producer类发送 消息到消息队列JOBS。suspend和JOBS。delete,Consumer类从消息队列接收和处理消息。 图3。3概述了job queue例子的功能。Producer类使用单一的JMS MessageProducer发送1000个job消息, 这些消息以10个为一组随机的发送到两个消息队列之一。在发送1000个消息之后,Producer类自动关闭。 Consumer使用单一的JMS MessageConsumer为每一个消息队列注册JMS MessageListener, JMS MessageListener在处理消息之后输出消息内容。
3.3.1 运行job queue实例
运行job queue这个例子的步骤和运行前面一个例子的步骤几乎相同:
启动ActiveMQ
运行Consumer类
运行Publisher类
同样,这些步骤很简单,但是有一点需要注意。当使用点对点消息时,消息队列会保存消息直到消息被处理 或者过期。所以,Producer类可以在Consumer类之前运行,并且Consumer类不会错过任何消息。 如同在stock portfolio实例中那样,第一步是启动ActiveMQ。这里省略了启动ActiveMQ时控制台的输出, 因为这里的输出和清单1。6中一样,ActiveMQ使用的默认配置信息没有修改。
下一步,打开第二个终端或命令行窗口,输入下面的命令运行Producer类。
注意,清单3。5中运行Producer类不需要任何参数。Producer发送消息到两个名称分别为delete和suspend的消息队列。 因此,在输出中会用到两个消息对列的名称。Producer发送1000个消息到两个消息队列后自动关闭。
第三步是打开第三个终端或命令行控制台并执行Consumer类以接受和发送消息。执行Consumer类的命令如下:
Consumer类在开始的时候快速执行,处理消息队列中的的消息。当Producer发送的1000个消息处理完后,
Consumer慢下来,等待Publisher类发送消息直到Publisher完成发送1000个消息并自动关闭。当Producer 发送完1000个消息后,Producer自动关闭后,你需要在第三个终端或命令行控制台窗口按下CTRL+C键以便 关闭Consumer类。这就是job queue的例子。现在你已经知道点对点消息是如何在ActiveMQ中工作的。
网友评论