- 浏览: 7339184 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
如果用过JMS的话,会发现它类似写JDBC或JCA代码。它有创建或检索JMS资源的样板代码,每当你需要编写一个新类来发送或接受消息时,都得重复编写那个样本代码。下面列出了传统JMS实现涉及的步骤:
1、创建JNDI初始上下文context;
2、从JNDI上下文获得队列连接工厂;
3、从队列连接工厂取得队列Queue;
4、创建一个Session对象;
5、创建一个发送或接受对象;
6、利用第5部创建的发送或接受对象发送或接受消息;
7、处理完消息后,关闭所有JMS资源。
在JBOSS中配置:
<?xml version="1.0" encoding="UTF-8"?> <!-- $Id: mail-service.xml 62350 2007-04-15 16:50:12Z dimitris@jboss.org $ --> <server> <!-- ==================================================================== --> <!-- Mail Connection Factory --> <!-- ==================================================================== --> <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=longgangbai"> <attribute name="JNDIName">queue/longgangbai</attribute> <depends optional-attribute-name="DestinationManager" >jboss.mq:service=DestinationManager</depends> </mbean> </server>
Spring中JMS的配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 设置消息服务的初始化参数信息 --> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <props> <prop key="java.naming.factory.initial"> org.jnp.interfaces.NamingContextFactory </prop> <prop key="java.naming.provider.url"> jnp://localhost:1099 </prop> <prop key="java.naming.factory.url.pkgs"> org.jboss.naming:org.jnp.interfaces </prop> </props> </property> </bean> <!-- 创建消息服务的连接工厂的信息 JMS1.02 TopicConnectionFactory 和QueueConnectionFactory JMS1.1 TopicConnectionFactory 和QueueConnectionFactory合并为ConnectionFactory --> <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>ConnectionFactory</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建JMS的目的地信息 --> <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>queue/longgangbai</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建JMS发送信息的模板的对象 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="connectionFactory"/> </property> <property name="defaultDestination"> <ref local="destination"/> </property> </bean> </beans>
Spring中JMS的代码如下:
package com.easyway.jboss.jms.ptp.spring.service; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; /** * Spring中JMS的简单应用 * @author longgangbai * */ public class JmsTemplate11 { private static final Log log=LogFactory.getLog(JmsTemplate11.class); public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); JmsTemplate jt=(JmsTemplate)ctx.getBean("jmsTemplate"); jt.send(new MessageCreator(){ @Override public Message createMessage(Session session) throws JMSException { return session.createTextMessage("the spring queue /TestQueue"); } }); log.info("发送信息成功!"); } }
客户端的配置:applicationContext-jms-receive.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 设置消息服务的初始化参数信息 --> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <props> <prop key="java.naming.factory.initial"> org.jnp.interfaces.NamingContextFactory </prop> <prop key="java.naming.provider.url"> jnp://localhost:1099 </prop> <prop key="java.naming.factory.url.pkgs"> org.jboss.naming:org.jnp.interfaces </prop> </props> </property> </bean> <!-- 创建消息服务的连接工厂的信息 JMS1.02 TopicConnectionFactory 和QueueConnectionFactory JMS1.1 TopicConnectionFactory 和QueueConnectionFactory合并为ConnectionFactory --> <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>ConnectionFactory</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建JMS的目的地信息 --> <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>queue/longgangbai</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建JMS发送信息的模板的对象 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="connectionFactory"/> </property> <property name="defaultDestination"> <ref local="destination"/> </property> </bean> <!-- 定义消息的监听器的实现 --> <bean id="messageListener" class="com.easyway.jboss.jms.ptp.spring.service.SpringJMSMessageListener"> <property name="jmsTemplate"> <ref bean="jmsTemplate"/> </property> </bean>
package com.easyway.jboss.jms.ptp.spring.service;
import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.QueueSession; import javax.jms.Session; import javax.jms.TextMessage;
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.jms.core.JmsTemplate; /** * Spring JMS 中消息监听的事件的处理 * * @author longgangbai * */ public class SpringJMSMessageListener implements MessageListener ,InitializingBean,DisposableBean{ private static final Log log=LogFactory.getLog(SpringJMSMessageListener.class); private JmsTemplate jmsTemplate; private Connection conn; public JmsTemplate getJmsTemplate() { return jmsTemplate; }
public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; }
public Connection getConn() { return conn; }
public void setConn(Connection conn) { this.conn = conn; }
/** * 处理消息的方法 */ @Override public void onMessage(Message message) { if (message instanceof TextMessage) { try { System.out.println(((TextMessage) message).getText()); } catch (JMSException ex) { throw new RuntimeException(ex); } } else { throw new IllegalArgumentException("Message must be of type TextMessage"); } }
/** * 初始化的连接的操作 */ @Override public void afterPropertiesSet() throws Exception { ConnectionFactory conFactory=jmsTemplate.getConnectionFactory(); Destination destination=jmsTemplate.getDefaultDestination(); this.conn=conFactory.createConnection("guest", "guest"); Session session=conn.createSession(false, QueueSession.AUTO_ACKNOWLEDGE); MessageConsumer mc=session.createConsumer(destination); mc.setMessageListener(this); conn.start(); }
/** * 销毁连接的操作 */ @Override public void destroy() throws Exception { conn.close(); }
}
发表评论
-
【转】在项目中使用多个数据源-多sessionFactory方案
2013-05-10 16:30 3131适用范围:适合SSH架构访问多个数据库, ... -
【转】使用spring的动态路由实现数据库负载均衡
2013-03-17 22:57 3306使用spring的动态路由实现数据库负载均衡 系统中 ... -
【转】spring 数据库读写分离
2013-03-17 22:56 2804什么是数据库的读写分离 数据库的读写分离简单的说是把对数据 ... -
[转]Spring+iBatis+JOTM实现JTA事务
2013-03-17 22:51 3059Spring+iBatis+JOTM实现JTA事务 ... -
Spring 和Axis2整合相关那些事
2012-12-29 12:58 10421Axis2优劣: 现在用axis2开发一个webse ... -
【转】JAVA并发容器代码随读
2012-12-06 15:29 2952转载自 http://rdc.taobao.c ... -
Spring3.04和Junit4
2011-11-27 18:15 4396在Spring3.x以上必须采用 ... -
Spring加载属性文件的扩展
2011-08-22 12:21 3026在项目中一个属性文件配置信息,提供给数据连接信息 ... -
Brap和Spring整合(简单权限验证)
2011-07-26 10:31 1390在使用Spring的发 ... -
Quartz的任务的临时启动和暂停和恢复
2011-07-16 10:18 40226在项目中需要手动启停某些服务,那么需要有一个控 ... -
Quartz中定时调度EJB3.0服务
2011-07-13 22:25 2937在quartz2.0中只支持EJb2.0的服务 ... -
Quartz中定时调度EJB2.0服务
2011-07-13 22:12 2180在Quartz2.0中提供支持EJB2.0 ... -
Quartz的简单使用
2011-07-13 22:05 9956最近工作需要学习quartz,那么必须首先了解三个概念:调度器 ... -
Brap 远程访问调用 和Spring整合(二)
2010-12-08 14:52 2006Brap和 Spring 整合使用如 ... -
闲着没事Hessian开发WebService的总结(二)
2010-12-07 20:30 4034在Spring和Hessian整合中,以前 ... -
Spring JMX的学习总结(三) 基于注释的JMX的使用
2010-12-03 17:26 3360具体实现JMX的注释的类: package c ... -
Spring JMX的总结学习(二) 注解实现MBean
2010-12-03 17:24 6280本文采用Spring JMX ... -
Spring JMX的总结学习(一)基于标准接口的JMX
2010-12-03 17:21 3778在Spring中采用JMX标准形式的,开发相关的Spr ... -
Spring JMS的开发应用--自定义消息转换器的使用(四)
2010-12-03 01:37 2509在Spring JMS、中可以通过实现Me ... -
Spring中AOP实现EHCache的整合中采用SpringModule结合(二)
2010-09-01 19:22 2448在Spring中通过EHCa ...
相关推荐
总结,这个ESB应用Spring_Hello_World实例是学习和理解如何在JBoss ESB中整合Spring框架进行服务开发的一个基础练习。通过这个示例,开发者可以了解到ESB中的消息传递机制、队列配置以及如何利用Spring进行服务实现...
10. **Java消息服务(JMS)支持**:Spring提供对JMS的全面支持,可以与多种开源消息代理如Apache ActiveMQ、Mule ESB、JbossMQ等协同工作。 11. **其他模块**:Spring还有许多其他功能,如测试支持、任务调度、缓存...
相比于其他JMS Provider,如JBossMQ,ActiveMQ 在性能上有着显著的优势,通常情况下其处理消息的速度能够达到前者的10倍之多,这对于要求高吞吐量和低延迟的应用场景尤为重要。 7. **持续发展的优势** 作为...
Apache ActiveMQ 是一个流行的开源消息中间件,它实现了Java消息服务(JMS)规范,允许应用程序之间进行异步通信。在本文中,我们将探讨如何在Tomcat服务器上设置和使用ActiveMQ的简单实例。 **一、ActiveMQ的特点...
值得一提的是,ActiveMQ与Spring框架的深度集成,为开发者提供了更简洁的配置管理和依赖注入机制,大大简化了开发流程。性能方面,ActiveMQ表现卓越,其速度通常比JBossMQ快10倍,显示出其在处理高并发、大数据量...
同时,ActiveMQ具备良好的Spring框架支持,运行速度快,性能比JBossMQ高出十倍,并且有Apache社区的强大支持,这意味着它拥有持续发展的潜力。 下载和安装ActiveMQ非常简单,可以从官方网站...
3. **与Spring框架的深度整合**:ActiveMQ可以无缝嵌入Spring框架的应用中,同时也支持Spring 2.0的特性,简化了消息服务的集成和管理。 4. **广泛的J2EE服务器兼容性**:ActiveMQ经过验证,可在Geronimo、JBoss 4...
1. **开源JMS Providers**:市场上存在多个开源JMS Providers,如JbossMQ、Jboss Messaging、Joram、OpenJMS、MantaMQ、UberMQ和Somnifugi JMS等。然而,这些项目大多已停止更新,或者与特定的J2EE服务器绑定。相比...
- 支持多种开源应用服务器,如 JBoss、Geronimo,以及与 Spring 框架的集成,使 ActiveMQ 能够无缝融入现有的开发环境。 - 支持多种客户端语言和协议,包括 Java、C、C++、C#、Ruby、Perl、Python 和 PHP,以及 ...
例如,ActiveMQ具有很好的Spring支持,允许开发者在Spring应用中轻松地集成ActiveMQ,并利用Spring提供的依赖注入和事务管理功能。另外,ActiveMQ社区提供了各种插件和扩展来支持不同的消息模式和协议,使得ActiveMQ...
此外,ActiveMQ还支持多种协议,如STOMP、OpenWire和REST,以及与Spring框架的深度集成,确保了其在应用中的易用性和高效性。 在性能方面,ActiveMQ以其高速度著称,比JBossMQ快约10倍。由于得到Apache社区的支持,...
此外,ActiveMQ还具有优秀的Spring框架支持,使得集成到Spring应用中变得极其便捷。其性能表现优越,通常比JBossMQ快10倍,且得益于Apache社区的支持,ActiveMQ拥有持续发展的潜力。 在部署Apache ActiveMQ时,首先...
ActiveMQ不仅能够无缝集成到JBoss、Geronimo等知名开源应用服务器中,还支持Spring框架的消息驱动,这意味着开发者可以在使用Spring的系统中轻松地内嵌ActiveMQ,利用其丰富的功能和高级特性。 #### P2P传输层创新 ...
ActiveMQ的一大亮点是其与Spring框架的良好集成,这使得在Spring应用中配置和使用ActiveMQ变得十分便捷。性能方面,ActiveMQ非常快速,通常比JBossMQ快10倍。由于得到Apache社区的广泛支持,ActiveMQ在持续发展和...
尽管ActiveMQ 在开源JMS提供商中脱颖而出,但仍有其他竞争对手,如JBoss的jBossMQ和jBoss Messaging,OpenJMS,以及IBM WebSphereMQ、BEA WebLogic JMS等商业产品。尽管这些产品都有各自的优点,但ActiveMQ的独立性...
5. **良好的 Spring 集成**:与 Spring 框架有很好的集成,可以轻松地将 ActiveMQ 集成到基于 Spring 的应用中。 6. **高性能**:相较于 JBossMQ 等其他消息中间件,ActiveMQ 的性能更优,通常能达到 JBossMQ 性能...
ActiveMQ 是一款由Apache软件基金会开发的开源消息中间件,广泛应用在各种企业级环境中。它遵循Java消息服务(JMS)1.1规范,并且兼容J2EE 1.4及以上版本,使得它可以在多种Java虚拟机(JVM)和Web容器中运行。...
ActiveMQ与Spring的良好集成,以及比JBossMQ快10倍的处理速度,使其成为企业级消息传递的理想选择。Apache社区的持续支持也确保了ActiveMQ的长期发展和稳定性。 再者,Nginx以其独特的热部署功能和出色的高并发处理...
通过以上介绍,我们对ActiveMQ有了较为全面的认识,包括它的特性、部署过程以及如何开发简单的消息传递应用程序。无论是对于新手还是有一定经验的开发者来说,掌握这些核心概念都是至关重要的。
ActiveMQ因其广泛的语言支持(包括Java、C、C++、AJAX、ACTIONSCRIPT等)、多协议支持(如STOMP、OpenWire、REST)以及与Spring框架的良好集成而备受青睐。此外,它的性能表现优秀,速度是JBossMQ的10倍,且由于...