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>
3、Listener端(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.java至classes目录:
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请替换成本地对应目录。
相关推荐
通过阅读提供的"Apache+ActiveMQ教程.pdf",你可以更深入地学习如何利用这些功能来优化你的系统架构。 总的来说,Apache ActiveMQ是一个强大且灵活的消息中间件,它与Spring的无缝集成使开发人员能够构建健壮、高效...
Apache ActiveMQ是一种开源的、支持多协议的、可运行于任何JVM的高性能消息中间件,它实现了Java消息服务(JMS)规范,并支持J2EE1.4以上版本。ActiveMQ的主要优势包括支持多种语言的客户端(如Java、C、C++、AJAX、...
### Apache ActiveMQ与JMS整合Tomcat:深入解析与实践 #### 一、Apache ActiveMQ:强大而灵活的开源消息中间件 Apache ActiveMQ作为一款成熟的开源消息中间件,不仅遵循了JMS 1.1规范,还兼容J2EE 1.4以上的标准,...
在本教程中,我们将深入探讨Apache ActiveMQ 5.11.2版本的核心特性和使用方法。 首先,ActiveMQ作为消息队列服务,它的主要功能是帮助应用程序之间进行异步通信,通过解耦发送者和接收者,提高了系统的可扩展性和...
Apache ActiveMQ 是一款开源的消息中间件,遵循Java消息服务(JMS)1.1规范,兼容J2EE1.4及以上版本。它以其强大的特性和优势,在IT领域中被广泛使用,包括支持多种语言的客户端,如Java、C、C++、AJAX和...
Apache ActiveMQ 是一个开源的消息中间件,它实现了Java消息服务(JMS)1.1规范,适用于J2EE 1.4及更高版本的环境。ActiveMQ因其广泛的语言支持(包括Java、C、C++、AJAX、ACTIONSCRIPT等)、多协议支持(如STOMP、...
Apache ActiveMQ是开源的、基于Java消息服务(JMS)的应用服务器,它是Apache软件基金会的一部分。这个"apache-activemq-5.15.8-bin.zip"文件包含了ActiveMQ的可执行版本,用于在本地计算机上安装和运行ActiveMQ服务...
Apache ActiveMQ 是一款开源的消息中间件,遵循Java消息服务(JMS)1.1规范,兼容J2EE1.4及以上版本。它可以在任何Java虚拟机(JVM)上运行,适应各种Web容器,提供了丰富的客户端支持,包括Java、C、C++、AJAX和...
Apache ActiveMQ 是一款开源的、基于 Apache 2.0 许可证发布的消息中间件,它遵循Java消息服务(JMS)1.1和J2EE 1.4规范。作为最流行和强大的消息中间件之一,ActiveMQ 提供了多种语言和协议的支持,如Java、C、C++...
在你提到的"apache-activemq-5.15.2"版本中,包含了"webapps-demo"这个目录,这是一个非常有价值的资源,它为开发者提供了丰富的示例和教程,帮助他们更好地理解和使用ActiveMQ。 1. **ActiveMQ基本概念**: - **...
4. **docs目录**:包含了ActiveMQ的文档,包括API参考、用户指南和教程。 5. **data目录**:默认情况下,这是ActiveMQ存储消息和持久化数据的位置。你可以根据需要修改`activemq.xml`来指定不同的数据存储路径。 6...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递标准(JMS,Java Message Service),用于在分布式系统中实现可靠的消息传递。在本文中,我们将深入探讨ActiveMQ v6.0.1的核心特性、应用...
"CentOS安装Activemq图文教程" 本文将详细介绍如何在CentOS系统中安装和配置Activemq,并实现开机启动的设置。 一、下载和安装Activemq 首先,我们需要从Apache官方网站下载Activemq的安装包。在浏览器中访问...
<a href=http://activemq.apache.org/version-5-getting-started.html >http://activemq.apache.org/version-5-getting-started.html</a> <a href=http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html>...
ActiveMQ 是Apache旗下的一款开源消息中间件,它支持多种消息协议,如AMQP、OpenWire、STOMP等,并且提供丰富的特性和功能,包括持久性消息存储、事务支持、集群能力等。ActiveMQ广泛应用于分布式系统中,帮助解决...
ActiveMQ 是一款由Apache软件基金会开发的开源消息中间件,广泛应用在各种企业级环境中。它遵循Java消息服务(JMS)1.1规范,并且兼容J2EE 1.4及以上版本,使得它可以在多种Java虚拟机(JVM)和Web容器中运行。...
Apache ActiveMQ 是一款高度活跃且功能丰富的开源消息中间件,基于Apache 2.0许可发布。作为Java消息服务(JMS)提供商,ActiveMQ 提供了多种消息传递模式,包括点对点和发布/订阅模式,使其适用于各种分布式系统中...
Apache ActiveMQ 是一个开源的JMS提供商,它是Apache软件基金会的一部分,也是最广泛使用的JMS实现之一。ActiveMQ提供了多种协议支持,包括开放消息传递协议(STOMP)、AMQP、MQTT等,使得它能够与各种不同类型的...