`

Apache ActiveMQ教程(五)

    博客分类:
  • JMS
阅读更多
Apache ActiveMQ教程(五)
2008-06-03 14:39

2.2 新建web应用(webapps/jms-test),修改WEB-INF/web.xml文件:

       增加一个自启动Servlet,该Servlet实现了MessageListener接口,作为Topic消息的Listener端。

<servlet>

    <servlet-name>jms-listener</servlet-name>

    <servlet-class>

       com.flvcd.servlet.JMSListener

    </servlet-class>

    <load-on-startup>1</load-on-startup>

</servlet>

 

2.3 修改activemq.xml文件:
      
为了支持持久化消息,需修改ActiveMQ的配置文件如下,使用默认的AMQ Message Store方式(索引文件方式)存储消息,据官网介绍是快速、稳定的。数据库存储方式可参照官网相关文档。
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" persistent="true" useShutdownHook="false">
<
persistenceAdapter>
<
amqPersistenceAdapter directory="activemq-data" maxFileLength="32mb"/>
</
persistenceAdapter>
</broker>


3Listener端(JMSListener.java)完整实现:

package com.flvcd.servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JMSListener extends HttpServlet implements MessageListener{

    /** 初始化jms连接,创建topic监听器 */
    public void init(ServletConfig config) throws ServletException{       
        try {
            InitialContext initCtx = new InitialContext();
            Context envContext = (Context) initCtx.lookup("java:comp/env");
            ConnectionFactory connectionFactory = (ConnectionFactory) envContext.lookup("jms/FailoverConnectionFactory");
            Connection connection = connectionFactory.createConnection();

            connection.setClientID("MyClient");

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

 

            //普通消息订阅者,无法接收持久消息
           
//MessageConsumer consumer = jmsSession.createConsumer((Destination) envContext.lookup("jms/topic/MyTopic"));
           
//基于Topic创建持久的消息订阅者,前提:Connection必须指定一个唯一的clientId,当前为MyClient
            TopicSubscriber consumer = jmsSession.createDurableSubscriber((Topic) envContext.lookup(
"jms/topic/MyTopic"), "MySub");

            consumer.setMessageListener(this);

            connection.start();
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

    /** 接收消息,做对应处理 */
    public void onMessage(Message message) {
        if (checkText(message, "RefreshArticleId") != null) {
            String articleId = checkText(message, "RefreshArticleId");
            System.out.println("接收刷新文章消息,开始刷新文章ID=" + articleId);
        }
        else if (checkText(message, "RefreshThreadId") != null) {
            String threadId = checkText(message, "RefreshThreadId");
            System.out.println("接收刷新论坛帖子消息,开始刷新帖子ID=" + threadId);
        } else {
            System.out.println("接收普通消息,不做任何处理!");
        }
    }

    private static String checkText(Message m, String s) {
        try {
            return m.getStringProperty(s);
        } catch (JMSException e) {
            e.printStackTrace(System.out);
            return null;
        }
    }
}

编译JMSListener.javaclasses目录:

javac -cp .;D:\apache-tomcat-6.0.14\lib\servlet-api.jar;D:\apache-tomcat-6.0.14\lib\geronimo-jms_1.1_spec-1.1.1.jar;D:\apache-tomcat-6.0.14\lib\activemq-core-5.1.0.jar -d . JMSListener.java

注:D:\apache-tomcat-6.0.14请替换成本地对应目录。

分享到:
评论
1 楼 saiskysky 2010-02-26  
想问下,为什么按你的配置完毕后,可以正常使用,但是将发布方的代码放到另外一个系统里面(一点不改),却无法正常发布信息呢??请指教谢谢了

相关推荐

    Apache+ActiveMQ教程

    通过阅读提供的"Apache+ActiveMQ教程.pdf",你可以更深入地学习如何利用这些功能来优化你的系统架构。 总的来说,Apache ActiveMQ是一个强大且灵活的消息中间件,它与Spring的无缝集成使开发人员能够构建健壮、高效...

    Apache_ActiveMQ教程

    Apache ActiveMQ是一种开源的、支持多协议的、可运行于任何JVM的高性能消息中间件,它实现了Java消息服务(JMS)规范,并支持J2EE1.4以上版本。ActiveMQ的主要优势包括支持多种语言的客户端(如Java、C、C++、AJAX、...

    Apache ActiveMQ教程 JMS 整合Tomcat

    ### Apache ActiveMQ与JMS整合Tomcat:深入解析与实践 #### 一、Apache ActiveMQ:强大而灵活的开源消息中间件 Apache ActiveMQ作为一款成熟的开源消息中间件,不仅遵循了JMS 1.1规范,还兼容J2EE 1.4以上的标准,...

    apache-activemq-5.11.2 附全解教程

    在本教程中,我们将深入探讨Apache ActiveMQ 5.11.2版本的核心特性和使用方法。 首先,ActiveMQ作为消息队列服务,它的主要功能是帮助应用程序之间进行异步通信,通过解耦发送者和接收者,提高了系统的可扩展性和...

    Apache_ActiveMQ教程.docx

    Apache ActiveMQ 是一款开源的消息中间件,遵循Java消息服务(JMS)1.1规范,兼容J2EE1.4及以上版本。它以其强大的特性和优势,在IT领域中被广泛使用,包括支持多种语言的客户端,如Java、C、C++、AJAX和...

    Apache-ActiveMQ教程.docx

    Apache ActiveMQ 是一个开源的消息中间件,它实现了Java消息服务(JMS)1.1规范,适用于J2EE 1.4及更高版本的环境。ActiveMQ因其广泛的语言支持(包括Java、C、C++、AJAX、ACTIONSCRIPT等)、多协议支持(如STOMP、...

    apache-activemq-5.15.8-bin.zip

    Apache ActiveMQ是开源的、基于Java消息服务(JMS)的应用服务器,它是Apache软件基金会的一部分。这个"apache-activemq-5.15.8-bin.zip"文件包含了ActiveMQ的可执行版本,用于在本地计算机上安装和运行ActiveMQ服务...

    Apache_ActiveMQ教程.doc

    Apache ActiveMQ 是一款开源的消息中间件,遵循Java消息服务(JMS)1.1规范,兼容J2EE1.4及以上版本。它可以在任何Java虚拟机(JVM)上运行,适应各种Web容器,提供了丰富的客户端支持,包括Java、C、C++、AJAX和...

    ActiveMQ教程+配置[归纳].pdf

    Apache ActiveMQ 是一款开源的、基于 Apache 2.0 许可证发布的消息中间件,它遵循Java消息服务(JMS)1.1和J2EE 1.4规范。作为最流行和强大的消息中间件之一,ActiveMQ 提供了多种语言和协议的支持,如Java、C、C++...

    apache-activemq-5.15.2下的demo

    在你提到的"apache-activemq-5.15.2"版本中,包含了"webapps-demo"这个目录,这是一个非常有价值的资源,它为开发者提供了丰富的示例和教程,帮助他们更好地理解和使用ActiveMQ。 1. **ActiveMQ基本概念**: - **...

    apache-activemq-5.18.1-bin.tar.gz

    4. **docs目录**:包含了ActiveMQ的文档,包括API参考、用户指南和教程。 5. **data目录**:默认情况下,这是ActiveMQ存储消息和持久化数据的位置。你可以根据需要修改`activemq.xml`来指定不同的数据存储路径。 6...

    ActiveMQ消息服务器 v6.0.1.zip

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递标准(JMS,Java Message Service),用于在分布式系统中实现可靠的消息传递。在本文中,我们将深入探讨ActiveMQ v6.0.1的核心特性、应用...

    CentOS安装Activemq图文教程

    "CentOS安装Activemq图文教程" 本文将详细介绍如何在CentOS系统中安装和配置Activemq,并实现开机启动的设置。 一、下载和安装Activemq 首先,我们需要从Apache官方网站下载Activemq的安装包。在浏览器中访问...

    JMS+activeMQ 教程

    &lt;a href=http://activemq.apache.org/version-5-getting-started.html &gt;http://activemq.apache.org/version-5-getting-started.html&lt;/a&gt; &lt;a href=http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html&gt;...

    ActiveMQ5.12.1 安装与配置.docx

    ActiveMQ 是Apache旗下的一款开源消息中间件,它支持多种消息协议,如AMQP、OpenWire、STOMP等,并且提供丰富的特性和功能,包括持久性消息存储、事务支持、集群能力等。ActiveMQ广泛应用于分布式系统中,帮助解决...

    ActiveMQ教程

    ActiveMQ 是一款由Apache软件基金会开发的开源消息中间件,广泛应用在各种企业级环境中。它遵循Java消息服务(JMS)1.1规范,并且兼容J2EE 1.4及以上版本,使得它可以在多种Java虚拟机(JVM)和Web容器中运行。...

    ActiveMQ教程+配置[参照].pdf

    Apache ActiveMQ 是一款高度活跃且功能丰富的开源消息中间件,基于Apache 2.0许可发布。作为Java消息服务(JMS)提供商,ActiveMQ 提供了多种消息传递模式,包括点对点和发布/订阅模式,使其适用于各种分布式系统中...

    JMS ACTIVEMQ 教程文档

    Apache ActiveMQ 是一个开源的JMS提供商,它是Apache软件基金会的一部分,也是最广泛使用的JMS实现之一。ActiveMQ提供了多种协议支持,包括开放消息传递协议(STOMP)、AMQP、MQTT等,使得它能够与各种不同类型的...

Global site tag (gtag.js) - Google Analytics